Bug 912121 - Rewrite require / import to match source tree. rs=devtools
authorJ. Ryan Stinnett <jryans@gmail.com>
Mon, 21 Sep 2015 12:04:18 -0500
changeset 263572 1145eb49fdc7
parent 263571 efa64dfee210
child 263573 cedc1af09fce
push id29414
push usercbook@mozilla.com
push date2015-09-22 10:19 +0000
treeherdermozilla-central@f4f27148d24c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdevtools
bugs912121
milestone44.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 912121 - Rewrite require / import to match source tree. rs=devtools In a following patch, all DevTools moz.build files will use DevToolsModules to install JS modules at a path that corresponds directly to their source tree location. Here we rewrite all require and import calls to match the new location that these files are installed to.
addon-sdk/source/lib/dev/debuggee.js
addon-sdk/source/lib/dev/toolbox.js
addon-sdk/source/lib/dev/utils.js
addon-sdk/source/lib/sdk/addon/runner.js
addon-sdk/source/lib/sdk/console/plain-text.js
addon-sdk/source/lib/sdk/loader/sandbox.js
addon-sdk/source/lib/toolkit/loader.js
addon-sdk/source/test/addons/page-mod-debugger-post/main.js
addon-sdk/source/test/addons/page-mod-debugger-pre/main.js
addon-sdk/source/test/test-page-mod-debug.js
addon-sdk/test/head.js
b2g/chrome/content/desktop.js
b2g/chrome/content/devtools/debugger.js
b2g/chrome/content/devtools/hud.js
b2g/components/DebuggerActors.js
b2g/simulator/bootstrap.js
b2g/simulator/lib/main.js
b2g/simulator/lib/simulator-process.js
browser/base/content/browser.js
browser/base/content/nsContextMenu.js
browser/components/customizableui/logging.js
browser/components/downloads/DownloadsCommon.jsm
browser/components/extensions/ext-browserAction.js
browser/components/loop/modules/LoopContacts.jsm
browser/components/loop/modules/LoopRooms.jsm
browser/components/loop/modules/LoopStorage.jsm
browser/components/loop/modules/MozLoopService.jsm
browser/components/sessionstore/SessionFile.jsm
browser/components/sessionstore/SessionSaver.jsm
browser/components/sessionstore/SessionStorage.jsm
browser/components/sessionstore/SessionStore.jsm
browser/components/sessionstore/TabState.jsm
browser/components/sessionstore/nsSessionStartup.js
browser/components/uitour/UITour.jsm
devtools/client/animationinspector/animation-controller.js
devtools/client/animationinspector/animation-panel.js
devtools/client/animationinspector/components.js
devtools/client/animationinspector/moz.build
devtools/client/animationinspector/test/browser_animation_timeline_header.js
devtools/client/animationinspector/test/head.js
devtools/client/animationinspector/test/unit/test_findOptimalTimeInterval.js
devtools/client/animationinspector/test/unit/test_timeScale.js
devtools/client/app-manager/app-projects.js
devtools/client/app-manager/app-validator.js
devtools/client/app-manager/builtin-adb-store.js
devtools/client/app-manager/connection-store.js
devtools/client/app-manager/content/connection-footer.js
devtools/client/app-manager/content/device.js
devtools/client/app-manager/content/index.js
devtools/client/app-manager/content/manifest-editor.js
devtools/client/app-manager/content/projects.js
devtools/client/app-manager/content/utils.js
devtools/client/app-manager/device-store.js
devtools/client/app-manager/moz.build
devtools/client/app-manager/simulators-store.js
devtools/client/app-manager/test/head.js
devtools/client/app-manager/test/test_app_validator.html
devtools/client/app-manager/test/test_connection_store.html
devtools/client/app-manager/test/test_device_store.html
devtools/client/app-manager/test/test_projects_store.html
devtools/client/app-manager/test/test_remain_connected.html
devtools/client/app-manager/test/test_template.html
devtools/client/app-manager/webapps-store.js
devtools/client/canvasdebugger/canvasdebugger.js
devtools/client/canvasdebugger/moz.build
devtools/client/canvasdebugger/panel.js
devtools/client/canvasdebugger/test/head.js
devtools/client/commandline/test/browser_cmd_highlight_02.js
devtools/client/commandline/test/browser_cmd_settings.js
devtools/client/commandline/test/head.js
devtools/client/commandline/test/helpers.js
devtools/client/debugger/content/actions/event-listeners.js
devtools/client/debugger/content/actions/moz.build
devtools/client/debugger/content/moz.build
devtools/client/debugger/content/reducers/moz.build
devtools/client/debugger/content/utils.js
devtools/client/debugger/content/views/event-listeners-view.js
devtools/client/debugger/content/views/moz.build
devtools/client/debugger/debugger-commands.js
devtools/client/debugger/debugger-controller.js
devtools/client/debugger/debugger-view.js
devtools/client/debugger/moz.build
devtools/client/debugger/panel.js
devtools/client/debugger/test/mochitest/browser_dbg_chrome-debugging.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-01.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-02.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-03.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-04.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-05.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-06.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-07.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-08.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-09.js
devtools/client/debugger/test/mochitest/browser_dbg_parser-10.js
devtools/client/debugger/test/mochitest/code_ugly-4.js
devtools/client/debugger/test/mochitest/head.js
devtools/client/definitions.js
devtools/client/devtools-clhandler.js
devtools/client/eyedropper/commands.js
devtools/client/eyedropper/eyedropper.js
devtools/client/eyedropper/moz.build
devtools/client/eyedropper/test/head.js
devtools/client/fontinspector/font-inspector.js
devtools/client/fontinspector/test/browser_fontinspector_theme-change.js
devtools/client/framework/ToolboxProcess.jsm
devtools/client/framework/connect/connect.js
devtools/client/framework/gDevTools.jsm
devtools/client/framework/moz.build
devtools/client/framework/selection.js
devtools/client/framework/sidebar.js
devtools/client/framework/target.js
devtools/client/framework/test/browser_devtools_api.js
devtools/client/framework/test/browser_keybindings_02.js
devtools/client/framework/test/browser_keybindings_03.js
devtools/client/framework/test/browser_toolbox_custom_host.js
devtools/client/framework/test/browser_toolbox_highlight.js
devtools/client/framework/test/browser_toolbox_hosts.js
devtools/client/framework/test/browser_toolbox_hosts_size.js
devtools/client/framework/test/browser_toolbox_minimize.js
devtools/client/framework/test/browser_toolbox_raise.js
devtools/client/framework/test/browser_toolbox_sidebar.js
devtools/client/framework/test/browser_toolbox_sidebar_events.js
devtools/client/framework/test/browser_toolbox_sidebar_existing_tabs.js
devtools/client/framework/test/browser_toolbox_sidebar_overflow_menu.js
devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js
devtools/client/framework/test/browser_toolbox_toggle.js
devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js
devtools/client/framework/test/browser_toolbox_transport_events.js
devtools/client/framework/test/browser_toolbox_window_reload_target.js
devtools/client/framework/test/browser_toolbox_window_shortcuts.js
devtools/client/framework/test/browser_toolbox_window_title_changes.js
devtools/client/framework/test/browser_two_tabs.js
devtools/client/framework/test/head.js
devtools/client/framework/test/shared-head.js
devtools/client/framework/toolbox-highlighter-utils.js
devtools/client/framework/toolbox-hosts.js
devtools/client/framework/toolbox-options.js
devtools/client/framework/toolbox-process-window.js
devtools/client/framework/toolbox.js
devtools/client/inspector/inspector-commands.js
devtools/client/inspector/inspector-panel.js
devtools/client/inspector/moz.build
devtools/client/inspector/selector-search.js
devtools/client/inspector/test/head.js
devtools/client/layoutview/test/head.js
devtools/client/layoutview/view.js
devtools/client/main.js
devtools/client/markupview/html-editor.js
devtools/client/markupview/markup-view.js
devtools/client/markupview/moz.build
devtools/client/markupview/test/head.js
devtools/client/memory/controller.js
devtools/client/memory/modules/census-view.js
devtools/client/memory/modules/moz.build
devtools/client/memory/moz.build
devtools/client/memory/panel.js
devtools/client/memory/test/mochitest/head.js
devtools/client/memory/test/mochitest/test_census-view-01.html
devtools/client/moz.build
devtools/client/netmonitor/har/har-automation.js
devtools/client/netmonitor/har/har-builder.js
devtools/client/netmonitor/har/har-collector.js
devtools/client/netmonitor/har/moz.build
devtools/client/netmonitor/har/toolbox-overlay.js
devtools/client/netmonitor/moz.build
devtools/client/netmonitor/netmonitor-controller.js
devtools/client/netmonitor/netmonitor-view.js
devtools/client/netmonitor/panel.js
devtools/client/netmonitor/test/head.js
devtools/client/performance/modules/global.js
devtools/client/performance/modules/logic/frame-utils.js
devtools/client/performance/modules/logic/marker-utils.js
devtools/client/performance/modules/logic/moz.build
devtools/client/performance/modules/logic/telemetry.js
devtools/client/performance/modules/logic/tree-model.js
devtools/client/performance/modules/logic/waterfall-utils.js
devtools/client/performance/modules/markers.js
devtools/client/performance/modules/moz.build
devtools/client/performance/modules/widgets/graphs.js
devtools/client/performance/modules/widgets/marker-details.js
devtools/client/performance/modules/widgets/marker-view.js
devtools/client/performance/modules/widgets/markers-overview.js
devtools/client/performance/modules/widgets/moz.build
devtools/client/performance/modules/widgets/tree-view.js
devtools/client/performance/modules/widgets/waterfall-ticks.js
devtools/client/performance/moz.build
devtools/client/performance/panel.js
devtools/client/performance/performance-controller.js
devtools/client/performance/test/browser_perf-events-calltree.js
devtools/client/performance/test/browser_perf-jit-view-02.js
devtools/client/performance/test/browser_perf-theme-toggle-01.js
devtools/client/performance/test/browser_profiler_tree-abstract-01.js
devtools/client/performance/test/browser_profiler_tree-abstract-02.js
devtools/client/performance/test/browser_profiler_tree-abstract-03.js
devtools/client/performance/test/browser_profiler_tree-abstract-04.js
devtools/client/performance/test/browser_profiler_tree-view-01.js
devtools/client/performance/test/browser_profiler_tree-view-02.js
devtools/client/performance/test/browser_profiler_tree-view-03.js
devtools/client/performance/test/browser_profiler_tree-view-04.js
devtools/client/performance/test/browser_profiler_tree-view-05.js
devtools/client/performance/test/browser_profiler_tree-view-06.js
devtools/client/performance/test/browser_profiler_tree-view-07.js
devtools/client/performance/test/browser_profiler_tree-view-08.js
devtools/client/performance/test/browser_profiler_tree-view-09.js
devtools/client/performance/test/browser_profiler_tree-view-10.js
devtools/client/performance/test/browser_profiler_tree-view-11.js
devtools/client/performance/test/browser_timeline-filters-01.js
devtools/client/performance/test/browser_timeline-waterfall-background.js
devtools/client/performance/test/browser_timeline-waterfall-generic.js
devtools/client/performance/test/browser_timeline-waterfall-sidebar.js
devtools/client/performance/test/head.js
devtools/client/performance/test/unit/head.js
devtools/client/performance/test/unit/test_frame-utils-01.js
devtools/client/performance/test/unit/test_frame-utils-02.js
devtools/client/performance/test/unit/test_jit-graph-data.js
devtools/client/performance/test/unit/test_jit-model-01.js
devtools/client/performance/test/unit/test_jit-model-02.js
devtools/client/performance/test/unit/test_marker-blueprint.js
devtools/client/performance/test/unit/test_marker-utils.js
devtools/client/performance/test/unit/test_perf-utils-allocations-to-samples.js
devtools/client/performance/test/unit/test_profiler-categories.js
devtools/client/performance/test/unit/test_tree-model-01.js
devtools/client/performance/test/unit/test_tree-model-02.js
devtools/client/performance/test/unit/test_tree-model-03.js
devtools/client/performance/test/unit/test_tree-model-04.js
devtools/client/performance/test/unit/test_tree-model-05.js
devtools/client/performance/test/unit/test_tree-model-06.js
devtools/client/performance/test/unit/test_tree-model-07.js
devtools/client/performance/test/unit/test_tree-model-08.js
devtools/client/performance/test/unit/test_tree-model-09.js
devtools/client/performance/test/unit/test_tree-model-10.js
devtools/client/performance/test/unit/test_tree-model-11.js
devtools/client/performance/test/unit/test_tree-model-12.js
devtools/client/performance/test/unit/test_tree-model-13.js
devtools/client/performance/test/unit/test_tree-model-allocations-01.js
devtools/client/performance/test/unit/test_tree-model-allocations-02.js
devtools/client/performance/test/unit/test_waterfall-utils-collapse-01.js
devtools/client/performance/test/unit/test_waterfall-utils-collapse-02.js
devtools/client/performance/test/unit/test_waterfall-utils-collapse-03.js
devtools/client/performance/test/unit/test_waterfall-utils-collapse-04.js
devtools/client/projecteditor/chrome/content/projecteditor-loader.js
devtools/client/projecteditor/lib/editors.js
devtools/client/projecteditor/lib/helpers/file-picker.js
devtools/client/projecteditor/lib/helpers/l10n.js
devtools/client/projecteditor/lib/helpers/moz.build
devtools/client/projecteditor/lib/helpers/prompts.js
devtools/client/projecteditor/lib/moz.build
devtools/client/projecteditor/lib/plugins/app-manager/app-project-editor.js
devtools/client/projecteditor/lib/plugins/app-manager/moz.build
devtools/client/projecteditor/lib/plugins/app-manager/plugin.js
devtools/client/projecteditor/lib/plugins/delete/delete.js
devtools/client/projecteditor/lib/plugins/delete/moz.build
devtools/client/projecteditor/lib/plugins/dirty/dirty.js
devtools/client/projecteditor/lib/plugins/dirty/moz.build
devtools/client/projecteditor/lib/plugins/image-view/image-editor.js
devtools/client/projecteditor/lib/plugins/image-view/moz.build
devtools/client/projecteditor/lib/plugins/image-view/plugin.js
devtools/client/projecteditor/lib/plugins/logging/logging.js
devtools/client/projecteditor/lib/plugins/logging/moz.build
devtools/client/projecteditor/lib/plugins/moz.build
devtools/client/projecteditor/lib/plugins/new/moz.build
devtools/client/projecteditor/lib/plugins/new/new.js
devtools/client/projecteditor/lib/plugins/rename/moz.build
devtools/client/projecteditor/lib/plugins/rename/rename.js
devtools/client/projecteditor/lib/plugins/save/moz.build
devtools/client/projecteditor/lib/plugins/save/save.js
devtools/client/projecteditor/lib/plugins/status-bar/moz.build
devtools/client/projecteditor/lib/plugins/status-bar/plugin.js
devtools/client/projecteditor/lib/project.js
devtools/client/projecteditor/lib/projecteditor.js
devtools/client/projecteditor/lib/shells.js
devtools/client/projecteditor/lib/stores/local.js
devtools/client/projecteditor/lib/stores/moz.build
devtools/client/projecteditor/lib/stores/resource.js
devtools/client/projecteditor/lib/tree.js
devtools/client/projecteditor/moz.build
devtools/client/projecteditor/test/head.js
devtools/client/promisedebugger/moz.build
devtools/client/promisedebugger/promise-controller.js
devtools/client/responsivedesign/moz.build
devtools/client/responsivedesign/responsivedesign.jsm
devtools/client/responsivedesign/test/head.js
devtools/client/scratchpad/moz.build
devtools/client/scratchpad/scratchpad-panel.js
devtools/client/scratchpad/scratchpad.js
devtools/client/scratchpad/test/browser_scratchpad_close_toolbox.js
devtools/client/scratchpad/test/browser_scratchpad_edit_ui_updates.js
devtools/client/scratchpad/test/browser_scratchpad_wrong_window_focus.js
devtools/client/scratchpad/test/head.js
devtools/client/shadereditor/moz.build
devtools/client/shadereditor/panel.js
devtools/client/shadereditor/shadereditor.js
devtools/client/shadereditor/test/head.js
devtools/client/shared/AppCacheUtils.jsm
devtools/client/shared/DeveloperToolbar.jsm
devtools/client/shared/Jsbeautify.jsm
devtools/client/shared/Parser.jsm
devtools/client/shared/autocomplete-popup.js
devtools/client/shared/browser-loader.js
devtools/client/shared/devices.js
devtools/client/shared/doorhanger.js
devtools/client/shared/frame-script-utils.js
devtools/client/shared/inplace-editor.js
devtools/client/shared/moz.build
devtools/client/shared/observable-object.js
devtools/client/shared/options-view.js
devtools/client/shared/redux/create-store.js
devtools/client/shared/redux/middleware/moz.build
devtools/client/shared/redux/moz.build
devtools/client/shared/redux/reducers.js
devtools/client/shared/source-utils.js
devtools/client/shared/telemetry.js
devtools/client/shared/test/browser_css_color.js
devtools/client/shared/test/browser_cubic-bezier-01.js
devtools/client/shared/test/browser_cubic-bezier-02.js
devtools/client/shared/test/browser_cubic-bezier-03.js
devtools/client/shared/test/browser_cubic-bezier-04.js
devtools/client/shared/test/browser_cubic-bezier-05.js
devtools/client/shared/test/browser_cubic-bezier-06.js
devtools/client/shared/test/browser_devices.js
devtools/client/shared/test/browser_filter-editor-01.js
devtools/client/shared/test/browser_filter-editor-02.js
devtools/client/shared/test/browser_filter-editor-03.js
devtools/client/shared/test/browser_filter-editor-04.js
devtools/client/shared/test/browser_filter-editor-05.js
devtools/client/shared/test/browser_filter-editor-06.js
devtools/client/shared/test/browser_filter-editor-07.js
devtools/client/shared/test/browser_filter-editor-08.js
devtools/client/shared/test/browser_filter-editor-09.js
devtools/client/shared/test/browser_filter-editor-10.js
devtools/client/shared/test/browser_filter-presets-01.js
devtools/client/shared/test/browser_filter-presets-02.js
devtools/client/shared/test/browser_filter-presets-03.js
devtools/client/shared/test/browser_flame-graph-01.js
devtools/client/shared/test/browser_flame-graph-02.js
devtools/client/shared/test/browser_flame-graph-03a.js
devtools/client/shared/test/browser_flame-graph-03b.js
devtools/client/shared/test/browser_flame-graph-03c.js
devtools/client/shared/test/browser_flame-graph-04.js
devtools/client/shared/test/browser_flame-graph-utils-01.js
devtools/client/shared/test/browser_flame-graph-utils-02.js
devtools/client/shared/test/browser_flame-graph-utils-03.js
devtools/client/shared/test/browser_flame-graph-utils-04.js
devtools/client/shared/test/browser_flame-graph-utils-05.js
devtools/client/shared/test/browser_flame-graph-utils-06.js
devtools/client/shared/test/browser_flame-graph-utils-hash.js
devtools/client/shared/test/browser_graphs-01.js
devtools/client/shared/test/browser_graphs-02.js
devtools/client/shared/test/browser_graphs-03.js
devtools/client/shared/test/browser_graphs-04.js
devtools/client/shared/test/browser_graphs-05.js
devtools/client/shared/test/browser_graphs-06.js
devtools/client/shared/test/browser_graphs-07a.js
devtools/client/shared/test/browser_graphs-07b.js
devtools/client/shared/test/browser_graphs-07c.js
devtools/client/shared/test/browser_graphs-07d.js
devtools/client/shared/test/browser_graphs-07e.js
devtools/client/shared/test/browser_graphs-08.js
devtools/client/shared/test/browser_graphs-09a.js
devtools/client/shared/test/browser_graphs-09b.js
devtools/client/shared/test/browser_graphs-09c.js
devtools/client/shared/test/browser_graphs-09d.js
devtools/client/shared/test/browser_graphs-09e.js
devtools/client/shared/test/browser_graphs-09f.js
devtools/client/shared/test/browser_graphs-10a.js
devtools/client/shared/test/browser_graphs-10b.js
devtools/client/shared/test/browser_graphs-10c.js
devtools/client/shared/test/browser_graphs-11a.js
devtools/client/shared/test/browser_graphs-11b.js
devtools/client/shared/test/browser_graphs-12.js
devtools/client/shared/test/browser_graphs-13.js
devtools/client/shared/test/browser_graphs-14.js
devtools/client/shared/test/browser_graphs-15.js
devtools/client/shared/test/browser_graphs-16.js
devtools/client/shared/test/browser_inplace-editor-01.js
devtools/client/shared/test/browser_inplace-editor-02.js
devtools/client/shared/test/browser_layoutHelpers-getBoxQuads.js
devtools/client/shared/test/browser_layoutHelpers.js
devtools/client/shared/test/browser_mdn-docs-01.js
devtools/client/shared/test/browser_mdn-docs-02.js
devtools/client/shared/test/browser_mdn-docs-03.js
devtools/client/shared/test/browser_num-l10n.js
devtools/client/shared/test/browser_observableobject.js
devtools/client/shared/test/browser_options-view-01.js
devtools/client/shared/test/browser_outputparser.js
devtools/client/shared/test/browser_poller.js
devtools/client/shared/test/browser_prefs-01.js
devtools/client/shared/test/browser_prefs-02.js
devtools/client/shared/test/browser_spectrum.js
devtools/client/shared/test/browser_tableWidget_basic.js
devtools/client/shared/test/browser_tableWidget_keyboard_interaction.js
devtools/client/shared/test/browser_tableWidget_mouse_interaction.js
devtools/client/shared/test/browser_telemetry_button_eyedropper.js
devtools/client/shared/test/browser_templater_basic.js
devtools/client/shared/test/browser_theme.js
devtools/client/shared/test/browser_toolbar_webconsole_errors_count.js
devtools/client/shared/test/browser_treeWidget_basic.js
devtools/client/shared/test/browser_treeWidget_keyboard_interaction.js
devtools/client/shared/test/browser_treeWidget_mouse_interaction.js
devtools/client/shared/test/head.js
devtools/client/shared/test/test-actor-registry.js
devtools/client/shared/test/test-actor.js
devtools/client/shared/test/unit/test_VariablesView_filtering-without-controller.js
devtools/client/shared/test/unit/test_VariablesView_getString_promise.js
devtools/client/shared/test/unit/test_advanceValidate.js
devtools/client/shared/test/unit/test_attribute-parsing-01.js
devtools/client/shared/test/unit/test_attribute-parsing-02.js
devtools/client/shared/test/unit/test_bezierCanvas.js
devtools/client/shared/test/unit/test_cubicBezier.js
devtools/client/shared/test/unit/test_undoStack.js
devtools/client/shared/theme-switching.js
devtools/client/shared/theme.js
devtools/client/shared/vendor/moz.build
devtools/client/shared/widgets/AbstractTreeItem.jsm
devtools/client/shared/widgets/BarGraphWidget.js
devtools/client/shared/widgets/BreadcrumbsWidget.jsm
devtools/client/shared/widgets/Chart.jsm
devtools/client/shared/widgets/CubicBezierWidget.js
devtools/client/shared/widgets/FastListWidget.js
devtools/client/shared/widgets/FilterWidget.js
devtools/client/shared/widgets/FlameGraph.js
devtools/client/shared/widgets/Graphs.js
devtools/client/shared/widgets/GraphsWorker.js
devtools/client/shared/widgets/LineGraphWidget.js
devtools/client/shared/widgets/MountainGraphWidget.js
devtools/client/shared/widgets/SideMenuWidget.jsm
devtools/client/shared/widgets/SimpleListWidget.jsm
devtools/client/shared/widgets/Spectrum.js
devtools/client/shared/widgets/TableWidget.js
devtools/client/shared/widgets/Tooltip.js
devtools/client/shared/widgets/TreeWidget.js
devtools/client/shared/widgets/VariablesView.jsm
devtools/client/shared/widgets/VariablesViewController.jsm
devtools/client/shared/widgets/ViewHelpers.jsm
devtools/client/shared/widgets/moz.build
devtools/client/sourceeditor/autocomplete.js
devtools/client/sourceeditor/css-autocompleter.js
devtools/client/sourceeditor/debugger.js
devtools/client/sourceeditor/editor.js
devtools/client/sourceeditor/moz.build
devtools/client/sourceeditor/test/browser_css_autocompletion.js
devtools/client/sourceeditor/test/browser_css_getInfo.js
devtools/client/sourceeditor/test/browser_css_statemachine.js
devtools/client/sourceeditor/test/browser_editor_autocomplete_events.js
devtools/client/sourceeditor/test/head.js
devtools/client/storage/moz.build
devtools/client/storage/panel.js
devtools/client/storage/test/head.js
devtools/client/storage/ui.js
devtools/client/styleeditor/StyleEditorUI.jsm
devtools/client/styleeditor/StyleEditorUtil.jsm
devtools/client/styleeditor/StyleSheetEditor.jsm
devtools/client/styleeditor/moz.build
devtools/client/styleeditor/styleeditor-commands.js
devtools/client/styleeditor/styleeditor-panel.js
devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js
devtools/client/styleeditor/test/browser_styleeditor_sv_resize.js
devtools/client/styleeditor/test/head.js
devtools/client/styleeditor/utils.js
devtools/client/styleinspector/computed-view.js
devtools/client/styleinspector/computedview.xhtml
devtools/client/styleinspector/css-parsing-utils.js
devtools/client/styleinspector/cssruleview.xhtml
devtools/client/styleinspector/moz.build
devtools/client/styleinspector/rule-view.js
devtools/client/styleinspector/style-inspector-menu.js
devtools/client/styleinspector/style-inspector-overlays.js
devtools/client/styleinspector/style-inspector.js
devtools/client/styleinspector/test/browser_computedview_getNodeInfo.js
devtools/client/styleinspector/test/browser_computedview_matched-selectors_01.js
devtools/client/styleinspector/test/browser_computedview_media-queries.js
devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-01.js
devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-02.js
devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-03.js
devtools/client/styleinspector/test/browser_ruleview_user-agent-styles.js
devtools/client/styleinspector/test/browser_styleinspector_output-parser.js
devtools/client/styleinspector/test/doc_frame_script.js
devtools/client/styleinspector/test/head.js
devtools/client/styleinspector/test/unit/test_parseDeclarations.js
devtools/client/styleinspector/test/unit/test_parsePseudoClassesAndAttributes.js
devtools/client/styleinspector/test/unit/test_parseSingleValue.js
devtools/client/styleinspector/utils.js
devtools/client/tilt/moz.build
devtools/client/tilt/test/browser_tilt_picking_inspector.js
devtools/client/tilt/test/head.js
devtools/client/tilt/tilt-commands.js
devtools/client/tilt/tilt-gl.js
devtools/client/tilt/tilt-math.js
devtools/client/tilt/tilt-utils.js
devtools/client/tilt/tilt-visualizer-style.js
devtools/client/tilt/tilt-visualizer.js
devtools/client/tilt/tilt.js
devtools/client/webaudioeditor/includes.js
devtools/client/webaudioeditor/moz.build
devtools/client/webaudioeditor/panel.js
devtools/client/webaudioeditor/test/browser_wa_graph-markers.js
devtools/client/webaudioeditor/test/head.js
devtools/client/webaudioeditor/views/properties.js
devtools/client/webconsole/console-commands.js
devtools/client/webconsole/console-output.js
devtools/client/webconsole/hudservice.js
devtools/client/webconsole/moz.build
devtools/client/webconsole/panel.js
devtools/client/webconsole/test/browser_console_consolejsm_output.js
devtools/client/webconsole/test/browser_console_open_or_focus.js
devtools/client/webconsole/test/browser_webconsole_autocomplete_and_selfxss.js
devtools/client/webconsole/test/browser_webconsole_bug_632347_iterators_generators.js
devtools/client/webconsole/test/browser_webconsole_property_provider.js
devtools/client/webconsole/test/browser_webconsole_scratchpad_panel_link.js
devtools/client/webconsole/test/browser_webconsole_split.js
devtools/client/webconsole/test/head.js
devtools/client/webconsole/webconsole.js
devtools/client/webide/content/addons.js
devtools/client/webide/content/details.js
devtools/client/webide/content/devicepreferences.js
devtools/client/webide/content/devicesettings.js
devtools/client/webide/content/logs.js
devtools/client/webide/content/monitor.js
devtools/client/webide/content/newapp.js
devtools/client/webide/content/permissionstable.js
devtools/client/webide/content/project-listing.js
devtools/client/webide/content/runtime-listing.js
devtools/client/webide/content/runtimedetails.js
devtools/client/webide/content/simulator.js
devtools/client/webide/content/webide.js
devtools/client/webide/content/wifi-auth.js
devtools/client/webide/modules/addons.js
devtools/client/webide/modules/app-manager.js
devtools/client/webide/modules/config-view.js
devtools/client/webide/modules/moz.build
devtools/client/webide/modules/project-list.js
devtools/client/webide/modules/runtime-list.js
devtools/client/webide/modules/runtimes.js
devtools/client/webide/modules/simulator-process.js
devtools/client/webide/modules/simulators.js
devtools/client/webide/modules/tab-store.js
devtools/client/webide/moz.build
devtools/client/webide/test/head.js
devtools/client/webide/test/sidebars/test_addons.html
devtools/client/webide/test/sidebars/test_telemetry.html
devtools/client/webide/test/test_addons.html
devtools/client/webide/test/test_basic.html
devtools/client/webide/test/test_build.html
devtools/client/webide/test/test_simulators.html
devtools/client/webide/test/test_telemetry.html
devtools/server/actors/addon.js
devtools/server/actors/canvas.js
devtools/server/actors/child-process.js
devtools/server/actors/csscoverage.js
devtools/server/actors/device.js
devtools/server/actors/framerate.js
devtools/server/actors/gcli.js
devtools/server/actors/highlighters.js
devtools/server/actors/highlighters/auto-refresh.js
devtools/server/actors/highlighters/box-model.js
devtools/server/actors/highlighters/css-transform.js
devtools/server/actors/highlighters/geometry-editor.js
devtools/server/actors/highlighters/moz.build
devtools/server/actors/highlighters/rect.js
devtools/server/actors/highlighters/rulers.js
devtools/server/actors/highlighters/utils/markup.js
devtools/server/actors/highlighters/utils/moz.build
devtools/server/actors/inspector.js
devtools/server/actors/layout.js
devtools/server/actors/memory.js
devtools/server/actors/memprof.js
devtools/server/actors/moz.build
devtools/server/actors/object.js
devtools/server/actors/performance-recording.js
devtools/server/actors/performance.js
devtools/server/actors/pretty-print-worker.js
devtools/server/actors/profiler.js
devtools/server/actors/promises.js
devtools/server/actors/script.js
devtools/server/actors/storage.js
devtools/server/actors/styleeditor.js
devtools/server/actors/styles.js
devtools/server/actors/stylesheets.js
devtools/server/actors/timeline.js
devtools/server/actors/utils/ScriptStore.js
devtools/server/actors/utils/TabSources.js
devtools/server/actors/utils/make-debugger.js
devtools/server/actors/utils/map-uri-to-addon-id.js
devtools/server/actors/utils/moz.build
devtools/server/actors/webapps.js
devtools/server/actors/webbrowser.js
devtools/server/actors/webconsole.js
devtools/server/actors/webgl.js
devtools/server/child.js
devtools/server/content-server.jsm
devtools/server/dbg-server.jsm
devtools/server/main.js
devtools/server/moz.build
devtools/server/protocol.js
devtools/server/tests/browser/browser_markers-timestamp.js
devtools/server/tests/browser/browser_perf-legacy-front-01.js
devtools/server/tests/browser/browser_perf-legacy-front-02.js
devtools/server/tests/browser/browser_perf-legacy-front-03.js
devtools/server/tests/browser/browser_perf-profiler-01.js
devtools/server/tests/browser/browser_perf-profiler-02.js
devtools/server/tests/browser/browser_perf-profiler-03.js
devtools/server/tests/browser/head.js
devtools/server/tests/mochitest/director-helpers.js
devtools/server/tests/mochitest/inspector-helpers.js
devtools/server/tests/mochitest/memory-helpers.js
devtools/server/tests/mochitest/memprof-helpers.js
devtools/server/tests/mochitest/test_connectToChild.html
devtools/server/tests/mochitest/test_connection-manager.html
devtools/server/tests/mochitest/test_css-logic-inheritance.html
devtools/server/tests/mochitest/test_css-logic-media-queries.html
devtools/server/tests/mochitest/test_css-logic-specificity.html
devtools/server/tests/mochitest/test_css-logic.html
devtools/server/tests/mochitest/test_device.html
devtools/server/tests/mochitest/test_framerate_01.html
devtools/server/tests/mochitest/test_framerate_02.html
devtools/server/tests/mochitest/test_framerate_03.html
devtools/server/tests/mochitest/test_framerate_04.html
devtools/server/tests/mochitest/test_framerate_05.html
devtools/server/tests/mochitest/test_framerate_06.html
devtools/server/tests/mochitest/test_getProcess.html
devtools/server/tests/mochitest/test_inspector_getImageData-wait-for-load.html
devtools/server/tests/mochitest/test_inspector_getImageDataFromURL.html
devtools/server/tests/mochitest/test_preference.html
devtools/server/tests/mochitest/test_registerActor.html
devtools/server/tests/mochitest/test_settings.html
devtools/server/tests/mochitest/test_setupInParentChild.html
devtools/server/tests/mochitest/test_styles-matched.html
devtools/server/tests/unit/head_dbg.js
devtools/server/tests/unit/test_monitor_actor.js
devtools/server/tests/unit/test_registerClient.js
devtools/server/worker.js
devtools/shared/DevToolsUtils.js
devtools/shared/Loader.jsm
devtools/shared/acorn/tests/unit/head_acorn.js
devtools/shared/apps/Devices.jsm
devtools/shared/apps/Simulator.jsm
devtools/shared/apps/app-actor-front.js
devtools/shared/apps/moz.build
devtools/shared/apps/tests/debugger-protocol-helper.js
devtools/shared/apps/tests/unit/head_apps.js
devtools/shared/client/connection-manager.js
devtools/shared/client/dbg-client.jsm
devtools/shared/client/main.js
devtools/shared/client/moz.build
devtools/shared/css-color.js
devtools/shared/discovery/discovery.js
devtools/shared/discovery/moz.build
devtools/shared/discovery/tests/unit/test_discovery.js
devtools/shared/event-emitter.js
devtools/shared/gcli/Templater.jsm
devtools/shared/gcli/commands/appcache.js
devtools/shared/gcli/commands/calllog.js
devtools/shared/gcli/commands/csscoverage.js
devtools/shared/gcli/commands/index.js
devtools/shared/gcli/commands/inject.js
devtools/shared/gcli/commands/jsb.js
devtools/shared/gcli/commands/listen.js
devtools/shared/gcli/commands/moz.build
devtools/shared/gcli/commands/paintflashing.js
devtools/shared/gcli/commands/rulers.js
devtools/shared/gcli/commands/screenshot.js
devtools/shared/gcli/commands/tools.js
devtools/shared/gcli/gcli.jsm
devtools/shared/gcli/moz.build
devtools/shared/gcli/source/lib/gcli/util/domtemplate.js
devtools/shared/heapsnapshot/HeapAnalysesClient.js
devtools/shared/heapsnapshot/HeapAnalysesWorker.js
devtools/shared/heapsnapshot/moz.build
devtools/shared/heapsnapshot/tests/unit/head_heapsnapshot.js
devtools/shared/jsbeautify/UPGRADING.md
devtools/shared/jsbeautify/beautify.js
devtools/shared/jsbeautify/lib/moz.build
devtools/shared/jsbeautify/lib/urlencode_unpacker.js
devtools/shared/jsbeautify/moz.build
devtools/shared/jsbeautify/src/beautify-html.js
devtools/shared/jsbeautify/src/moz.build
devtools/shared/jsbeautify/tests/unit/head_jsbeautify.js
devtools/shared/layout/moz.build
devtools/shared/moz.build
devtools/shared/output-parser.js
devtools/shared/performance/io.js
devtools/shared/performance/legacy/actors.js
devtools/shared/performance/legacy/compatibility.js
devtools/shared/performance/legacy/front.js
devtools/shared/performance/legacy/moz.build
devtools/shared/performance/legacy/recording.js
devtools/shared/performance/moz.build
devtools/shared/performance/recorder.js
devtools/shared/performance/test/head.js
devtools/shared/performance/test/test_perf-utils-allocations-to-samples.js
devtools/shared/pretty-fast/moz.build
devtools/shared/pretty-fast/tests/unit/head_pretty-fast.js
devtools/shared/qrcode/decoder/moz.build
devtools/shared/qrcode/encoder/moz.build
devtools/shared/qrcode/moz.build
devtools/shared/qrcode/tests/mochitest/test_decode.html
devtools/shared/qrcode/tests/unit/test_encode.js
devtools/shared/security/auth.js
devtools/shared/security/cert.js
devtools/shared/security/moz.build
devtools/shared/security/prompt.js
devtools/shared/security/socket.js
devtools/shared/security/tests/unit/head_dbg.js
devtools/shared/security/tests/unit/test_oob_cert_auth.js
devtools/shared/shared/memory.js
devtools/shared/shared/moz.build
devtools/shared/shared/profiler.js
devtools/shared/shared/tests/browser/browser_async_storage.js
devtools/shared/shared/tests/browser/browser_worker-01.js
devtools/shared/shared/tests/browser/browser_worker-02.js
devtools/shared/shared/tests/browser/browser_worker-03.js
devtools/shared/shared/tests/unit/test_indentation.js
devtools/shared/shared/timeline.js
devtools/shared/shared/worker.js
devtools/shared/styleinspector/css-logic.js
devtools/shared/styleinspector/moz.build
devtools/shared/tern/tests/unit/head_tern.js
devtools/shared/tests/mochitest/test_devtools_extensions.html
devtools/shared/tests/mochitest/test_eventemitter_basic.html
devtools/shared/tests/mochitest/test_loader_paths.html
devtools/shared/tests/unit/head_devtools.js
devtools/shared/tests/unit/test_async-utils.js
devtools/shared/tests/unit/test_consoleID.js
devtools/shared/tests/unit/test_cssColor.js
devtools/shared/tests/unit/test_fetch-resource.js
devtools/shared/tests/unit/test_independent_loaders.js
devtools/shared/tests/unit/test_invisible_loader.js
devtools/shared/tests/unit/test_prettifyCSS.js
devtools/shared/tests/unit/test_require.js
devtools/shared/tests/unit/test_require_lazy.js
devtools/shared/touch/moz.build
devtools/shared/touch/simulator.js
devtools/shared/transport/moz.build
devtools/shared/transport/packets.js
devtools/shared/transport/stream-utils.js
devtools/shared/transport/tests/unit/head_dbg.js
devtools/shared/transport/tests/unit/test_dbgsocket_connection_drop.js
devtools/shared/transport/tests/unit/test_delimited_read.js
devtools/shared/transport/tests/unit/test_packet.js
devtools/shared/transport/transport.js
devtools/shared/webconsole/client.js
devtools/shared/webconsole/moz.build
devtools/shared/webconsole/network-helper.js
devtools/shared/webconsole/network-monitor.js
devtools/shared/webconsole/server-logger-monitor.js
devtools/shared/webconsole/server-logger.js
devtools/shared/webconsole/test/common.js
devtools/shared/webconsole/test/test_commands_registration.html
devtools/shared/webconsole/test/test_consoleapi_innerID.html
devtools/shared/webconsole/test/test_jsterm.html
devtools/shared/webconsole/test/unit/test_js_property_provider.js
devtools/shared/webconsole/test/unit/test_network_helper.js
devtools/shared/webconsole/test/unit/test_security-info-certificate.js
devtools/shared/webconsole/test/unit/test_security-info-parser.js
devtools/shared/webconsole/test/unit/test_security-info-protocol-version.js
devtools/shared/webconsole/test/unit/test_security-info-state.js
devtools/shared/webconsole/test/unit/test_security-info-static-hpkp.js
devtools/shared/webconsole/test/unit/test_security-info-weakness-reasons.js
devtools/shared/webconsole/utils.js
devtools/shared/worker-loader.js
devtools/templates.mozbuild
dom/manifest/ManifestProcessor.jsm
js/xpconnect/tests/chrome/test_onGarbageCollection.html
mobile/android/chrome/content/EmbedRT.js
mobile/android/chrome/content/RemoteDebugger.js
mobile/android/tests/browser/chrome/test_debugger_server.html
testing/marionette/driver.js
testing/marionette/server.js
testing/mochitest/browser-test.js
testing/talos/talos/page_load_test/devtools/addon/content/damp.js
testing/xpcshell/dbg-actors.js
testing/xpcshell/head.js
toolkit/components/addoncompat/CompatWarning.jsm
toolkit/components/extensions/Extension.jsm
toolkit/components/passwordmgr/InsecurePasswordUtils.jsm
toolkit/components/passwordmgr/LoginHelper.jsm
toolkit/components/perfmonitoring/AddonWatcher.jsm
toolkit/components/places/PlacesTransactions.jsm
toolkit/components/processsingleton/ContentProcessSingleton.js
toolkit/content/browser-content.js
toolkit/modules/Sqlite.jsm
toolkit/mozapps/extensions/content/extensions.js
toolkit/mozapps/extensions/internal/XPIProvider.jsm
webapprt/RemoteDebugger.jsm
webapprt/content/dbg-webapp-actors.js
webapprt/test/chrome/browser_debugger.js
--- a/addon-sdk/source/lib/dev/debuggee.js
+++ b/addon-sdk/source/lib/dev/debuggee.js
@@ -6,17 +6,17 @@
 
 module.metadata = {
   "stability": "experimental"
 };
 
 const { Cu } = require("chrome");
 const { Class } = require("../sdk/core/heritage");
 const { MessagePort, MessageChannel } = require("../sdk/messaging");
-const { require: devtoolsRequire } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { require: devtoolsRequire } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const { DebuggerServer } = devtoolsRequire("devtools/server/main");
 
 const outputs = new WeakMap();
 const inputs = new WeakMap();
 const targets = new WeakMap();
 const transports = new WeakMap();
 
 const inputFor = port => inputs.get(port);
--- a/addon-sdk/source/lib/dev/toolbox.js
+++ b/addon-sdk/source/lib/dev/toolbox.js
@@ -10,17 +10,17 @@ module.metadata = {
 
 const { Cu, Cc, Ci } = require("chrome");
 const { Class } = require("../sdk/core/heritage");
 const { Disposable, setup } = require("../sdk/core/disposable");
 const { contract, validate } = require("../sdk/util/contract");
 const { each, pairs, values } = require("../sdk/util/sequence");
 const { onEnable, onDisable } = require("../dev/theme/hooks");
 
-const { gDevTools } = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
+const { gDevTools } = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
 
 // This is temporary workaround to allow loading of the developer tools client - volcan
 // into a toolbox panel, this hack won't be necessary as soon as devtools patch will be
 // shipped in nightly, after which it can be removed. Bug 1038517
 const registerSDKURI = () => {
   const ioService = Cc['@mozilla.org/network/io-service;1']
                       .getService(Ci.nsIIOService);
   const resourceHandler = ioService.getProtocolHandler("resource")
--- a/addon-sdk/source/lib/dev/utils.js
+++ b/addon-sdk/source/lib/dev/utils.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { Cu } = require("chrome");
-const { gDevTools } = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-const { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { gDevTools } = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+const { devtools } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
 const { getActiveTab } = require("../sdk/tabs/utils");
 const { getMostRecentBrowserWindow } = require("../sdk/window/utils");
 
 const targetFor = target => {
   target = target || getActiveTab(getMostRecentBrowserWindow());
   return devtools.TargetFactory.forTab(target);
 };
--- a/addon-sdk/source/lib/sdk/addon/runner.js
+++ b/addon-sdk/source/lib/sdk/addon/runner.js
@@ -19,17 +19,17 @@ const { get } = require('../preferences/
 const appShellService = Cc['@mozilla.org/appshell/appShellService;1'].
                         getService(Ci.nsIAppShellService);
 const { preferences } = metadata;
 
 const Startup = Cu.import("resource://gre/modules/sdk/system/Startup.js", {}).exports;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyGetter(this, "BrowserToolboxProcess", function () {
-  return Cu.import("resource:///modules/devtools/ToolboxProcess.jsm", {}).
+  return Cu.import("resource:///modules/devtools/client/framework/ToolboxProcess.jsm", {}).
          BrowserToolboxProcess;
 });
 
 // Initializes default preferences
 function setDefaultPrefs(prefsURI) {
   const prefs = Cc['@mozilla.org/preferences-service;1'].
                 getService(Ci.nsIPrefService).
                 QueryInterface(Ci.nsIPrefBranch2);
--- a/addon-sdk/source/lib/sdk/console/plain-text.js
+++ b/addon-sdk/source/lib/sdk/console/plain-text.js
@@ -7,17 +7,17 @@
 module.metadata = {
   "stability": "unstable"
 };
 
 const { Cc, Ci, Cu, Cr } = require("chrome");
 const self = require("../self");
 const prefs = require("../preferences/service");
 const { merge } = require("../util/object");
-const { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
+const { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
 
 const DEFAULT_LOG_LEVEL = "error";
 const ADDON_LOG_LEVEL_PREF = "extensions." + self.id + ".sdk.console.logLevel";
 const SDK_LOG_LEVEL_PREF = "extensions.sdk.console.logLevel";
 
 var logLevel = DEFAULT_LOG_LEVEL;
 function setLogLevel() {
   logLevel = prefs.get(ADDON_LOG_LEVEL_PREF,
--- a/addon-sdk/source/lib/sdk/loader/sandbox.js
+++ b/addon-sdk/source/lib/sdk/loader/sandbox.js
@@ -10,17 +10,17 @@ module.metadata = {
 const { Cc, Ci, CC, Cu } = require('chrome');
 const systemPrincipal = CC('@mozilla.org/systemprincipal;1', 'nsIPrincipal')();
 const scriptLoader = Cc['@mozilla.org/moz/jssubscript-loader;1'].
                      getService(Ci.mozIJSSubScriptLoader);
 const self = require('sdk/self');
 const { getTabId, getTabForContentWindow } = require('../tabs/utils');
 const { getInnerId } = require('../window/utils');
 
-const { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { devtools } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const { require: devtoolsRequire } = devtools;
 const { addContentGlobal, removeContentGlobal } = devtoolsRequire("devtools/server/content-globals");
 
 /**
  * Make a new sandbox that inherits given `source`'s principals. Source can be
  * URI string, DOMWindow or `null` for system principals.
  */
 function sandbox(target, options) {
--- a/addon-sdk/source/lib/toolkit/loader.js
+++ b/addon-sdk/source/lib/toolkit/loader.js
@@ -793,17 +793,17 @@ function Loader(options) {
     modules, globals, resolve, paths, rootURI, manifest, requireMap, isNative,
     metadata, sharedGlobal, sharedGlobalBlacklist, checkCompatibility
   } = override({
     paths: {},
     modules: {},
     globals: {
       get console() {
         // Import Console.jsm from here to prevent loading it until someone uses it
-        let { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/Console.jsm");
+        let { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/shared/Console.jsm");
         let console = new ConsoleAPI({
           consoleID: options.id ? "addon/" + options.id : ""
         });
         Object.defineProperty(this, "console", { value: console });
         return this.console;
       }
     },
     checkCompatibility: false,
--- a/addon-sdk/source/test/addons/page-mod-debugger-post/main.js
+++ b/addon-sdk/source/test/addons/page-mod-debugger-post/main.js
@@ -7,19 +7,19 @@ const { Cu } = require('chrome');
 const { PageMod } = require('sdk/page-mod');
 const tabs = require('sdk/tabs');
 const { closeTab } = require('sdk/tabs/utils');
 const promise = require('sdk/core/promise')
 const { getMostRecentBrowserWindow } = require('sdk/window/utils');
 const { data } = require('sdk/self');
 const { set } = require('sdk/preferences/service');
 
-const { require: devtoolsRequire } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { require: devtoolsRequire } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const { DebuggerServer } = devtoolsRequire("devtools/server/main");
-const { DebuggerClient } = devtoolsRequire("devtools/toolkit/client/main");
+const { DebuggerClient } = devtoolsRequire("devtools/shared/client/main");
 
 var gClient;
 var ok;
 var testName = 'testDebugger';
 var iframeURL = 'data:text/html;charset=utf-8,' + testName;
 var TAB_URL = 'data:text/html;charset=utf-8,' + encodeURIComponent('<iframe src="' + iframeURL + '" />');
 TAB_URL = data.url('index.html');
 var mod;
--- a/addon-sdk/source/test/addons/page-mod-debugger-pre/main.js
+++ b/addon-sdk/source/test/addons/page-mod-debugger-pre/main.js
@@ -7,19 +7,19 @@ const { Cu } = require('chrome');
 const { PageMod } = require('sdk/page-mod');
 const tabs = require('sdk/tabs');
 const { closeTab } = require('sdk/tabs/utils');
 const promise = require('sdk/core/promise')
 const { getMostRecentBrowserWindow } = require('sdk/window/utils');
 const { data } = require('sdk/self');
 const { set } = require('sdk/preferences/service');
 
-const { require: devtoolsRequire } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { require: devtoolsRequire } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const { DebuggerServer } = devtoolsRequire("devtools/server/main");
-const { DebuggerClient } = devtoolsRequire("devtools/toolkit/client/main");
+const { DebuggerClient } = devtoolsRequire("devtools/shared/client/main");
 
 var gClient;
 var ok;
 var testName = 'testDebugger';
 var iframeURL = 'data:text/html;charset=utf-8,' + testName;
 var TAB_URL = 'data:text/html;charset=utf-8,' + encodeURIComponent('<iframe src="' + iframeURL + '" />');
 TAB_URL = data.url('index.html');
 var mod;
--- a/addon-sdk/source/test/test-page-mod-debug.js
+++ b/addon-sdk/source/test/test-page-mod-debug.js
@@ -5,17 +5,17 @@
 
 const { Cc, Ci, Cu } = require("chrome");
 const { PageMod } = require("sdk/page-mod");
 const { testPageMod, handleReadyState, openNewTab,
         contentScriptWhenServer, createLoader } = require("./page-mod/helpers");
 const { cleanUI, after } = require("sdk/test/utils");
 const { open, getFrames, getMostRecentBrowserWindow, getInnerId } = require("sdk/window/utils");
 
-const { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { devtools } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const { require: devtoolsRequire } = devtools;
 const contentGlobals = devtoolsRequire("devtools/server/content-globals");
 
 // The following adds Debugger constructor to the global namespace.
 const { addDebuggerToGlobal } = require('resource://gre/modules/jsdebugger.jsm');
 addDebuggerToGlobal(this);
 
 exports.testDebugMetadata = function(assert, done) {
--- a/addon-sdk/test/head.js
+++ b/addon-sdk/test/head.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const { utils: Cu } = Components;
 const { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
 const LoaderModule = Cu.import("resource://gre/modules/commonjs/toolkit/loader.js", {}).Loader;
-const { console } = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
+const { console } = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
 var {
   Loader, main, Module, Require, unload
 } = LoaderModule;
 
 var CURRENT_DIR = gTestPath.replace(/\/[^\/]*\.js$/,'/');
 var loaders = [];
 
 // All tests are asynchronous.
--- a/b2g/chrome/content/desktop.js
+++ b/b2g/chrome/content/desktop.js
@@ -3,19 +3,19 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
 var isMulet = "ResponsiveUI" in browserWindow;
 
 // Enable touch event shim on desktop that translates mouse events
 // into touch ones
 function enableTouch() {
-  let require = Cu.import('resource://gre/modules/devtools/Loader.jsm', {})
+  let require = Cu.import('resource://gre/modules/devtools/shared/Loader.jsm', {})
                   .devtools.require;
-  let { TouchEventSimulator } = require('devtools/toolkit/touch/simulator');
+  let { TouchEventSimulator } = require('devtools/shared/touch/simulator');
   let touchEventSimulator = new TouchEventSimulator(shell.contentBrowser);
   touchEventSimulator.start();
 }
 
 function setupButtons() {
   let homeButton = document.getElementById('home-button');
   if (!homeButton) {
     // The toolbar only exists in b2g desktop build with
@@ -103,17 +103,17 @@ function checkDebuggerPort() {
     Services.prefs.setCharPref('devtools.debugger.unix-domain-socket', dbgport);
     navigator.mozSettings.createLock().set(
       {'debugger.remote-mode': 'adb-devtools'});
   }
 }
 
 
 function initResponsiveDesign() {
-  Cu.import('resource:///modules/devtools/responsivedesign.jsm');
+  Cu.import('resource:///modules/devtools/client/responsivedesign/responsivedesign.jsm');
   ResponsiveUIManager.on('on', function(event, {tab:tab}) {
     let responsive = ResponsiveUIManager.getResponsiveUIForTab(tab);
     let document = tab.ownerDocument;
 
     // Only tweak reponsive mode for shell.html tabs.
     if (tab.linkedBrowser.contentWindow != window) {
       return;
     }
@@ -149,18 +149,18 @@ function initResponsiveDesign() {
 
 }
 
 function openDevtools() {
   // Open devtool panel while maximizing its size according to screen size
   Services.prefs.setIntPref('devtools.toolbox.sidebar.width',
                             browserWindow.outerWidth - 550);
   Services.prefs.setCharPref('devtools.toolbox.host', 'side');
-  let {gDevTools} = Cu.import('resource:///modules/devtools/gDevTools.jsm', {});
-  let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+  let {gDevTools} = Cu.import('resource:///modules/devtools/client/framework/gDevTools.jsm', {});
+  let {devtools} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
   let target = devtools.TargetFactory.forTab(browserWindow.gBrowser.selectedTab);
   gDevTools.showToolbox(target);
 }
 
 window.addEventListener('ContentStart', function() {
   // On Firefox Mulet, touch events are enabled within the responsive mode
   if (!isMulet) {
     enableTouch();
--- a/b2g/chrome/content/devtools/debugger.js
+++ b/b2g/chrome/content/devtools/debugger.js
@@ -3,17 +3,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 XPCOMUtils.defineLazyGetter(this, "devtools", function() {
   const { devtools } =
-    Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+    Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
   return devtools;
 });
 
 XPCOMUtils.defineLazyGetter(this, "DebuggerServer", function() {
   const { DebuggerServer } = devtools.require("devtools/server/main");
   return DebuggerServer;
 });
 
@@ -21,17 +21,17 @@ XPCOMUtils.defineLazyGetter(this, "B2GTa
   const { B2GTabList } =
     devtools.require("resource://gre/modules/DebuggerActors.js");
   return B2GTabList;
 });
 
 // Load the discovery module eagerly, so that it can set a device name at
 // startup.  This does not cause discovery to start listening for packets, as
 // that only happens once DevTools is enabled.
-devtools.require("devtools/toolkit/discovery/discovery");
+devtools.require("devtools/shared/discovery/discovery");
 
 var RemoteDebugger = {
   _listening: false,
 
   /**
    * Prompt the user to accept or decline the incoming connection.
    *
    * @param session object
@@ -98,17 +98,17 @@ var RemoteDebugger = {
    *         A promise that will be resolved to the above is also allowed.
    */
   receiveOOB() {
     if (this._receivingOOB) {
       return this._receivingOOB;
     }
     this._listen();
 
-    const QR = devtools.require("devtools/toolkit/qrcode/index");
+    const QR = devtools.require("devtools/shared/qrcode/index");
     this._receivingOOB = new Promise((resolve, reject) => {
       this._handleAuthEvent = detail => {
         debug(detail.action);
         if (detail.action === "abort") {
           this._handleAuthEvent = null;
           this._receivingOOB = null;
           reject();
           return;
--- a/b2g/chrome/content/devtools/hud.js
+++ b/b2g/chrome/content/devtools/hud.js
@@ -5,26 +5,26 @@
 'use strict';
 
 // settings.js loads this file when the HUD setting is enabled.
 
 const DEVELOPER_HUD_LOG_PREFIX = 'DeveloperHUD';
 const CUSTOM_HISTOGRAM_PREFIX = 'DEVTOOLS_HUD_CUSTOM_';
 
 XPCOMUtils.defineLazyGetter(this, 'devtools', function() {
-  const {devtools} = Cu.import('resource://gre/modules/devtools/Loader.jsm', {});
+  const {devtools} = Cu.import('resource://gre/modules/devtools/shared/Loader.jsm', {});
   return devtools;
 });
 
 XPCOMUtils.defineLazyGetter(this, 'DebuggerClient', function() {
-  return devtools.require('devtools/toolkit/client/main').DebuggerClient;
+  return devtools.require('devtools/shared/client/main').DebuggerClient;
 });
 
 XPCOMUtils.defineLazyGetter(this, 'WebConsoleUtils', function() {
-  return devtools.require('devtools/toolkit/webconsole/utils').Utils;
+  return devtools.require('devtools/shared/webconsole/utils').Utils;
 });
 
 XPCOMUtils.defineLazyGetter(this, 'EventLoopLagFront', function() {
   return devtools.require('devtools/server/actors/eventlooplag').EventLoopLagFront;
 });
 
 XPCOMUtils.defineLazyGetter(this, 'PerformanceEntriesFront', function() {
   return devtools.require('devtools/server/actors/performance-entries').PerformanceEntriesFront;
--- a/b2g/components/DebuggerActors.js
+++ b/b2g/components/DebuggerActors.js
@@ -2,17 +2,17 @@
 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { Cu } = require("chrome");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils.js");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const promise = require("promise");
 const { XPCOMUtils } = require("resource://gre/modules/XPCOMUtils.jsm");
 const { BrowserTabList } = require("devtools/server/actors/webbrowser");
 
 XPCOMUtils.defineLazyGetter(this, "Frames", function() {
   const { Frames } =
     Cu.import("resource://gre/modules/Frames.jsm", {});
   return Frames;
--- a/b2g/simulator/bootstrap.js
+++ b/b2g/simulator/bootstrap.js
@@ -26,17 +26,17 @@ function uninstall(data, reason) {}
 
 function startup(data, reason) {
   let uri = registerAddonResourceHandler(data);
 
   let loaderModule =
     Cu.import('resource://gre/modules/commonjs/toolkit/loader.js').Loader;
   let { Loader, Require, Main } = loaderModule;
 
-  const { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/Console.jsm");
+  const { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/shared/Console.jsm");
 
   let loader = Loader({
     paths: {
       "./": uri + "lib/",
       "": "resource://gre/modules/commonjs/"
     },
     globals: {
       console: new ConsoleAPI({
--- a/b2g/simulator/lib/main.js
+++ b/b2g/simulator/lib/main.js
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
 const { Cc, Ci, Cu } = require("chrome");
 
 const { AddonManager } = Cu.import("resource://gre/modules/AddonManager.jsm", {});
 const { Promise: promise } = Cu.import("resource://gre/modules/Promise.jsm", {});
 const { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
-const { Simulator } = Cu.import("resource://gre/modules/devtools/Simulator.jsm");
+const { Simulator } = Cu.import("resource://gre/modules/devtools/shared/apps/Simulator.jsm");
 const { SimulatorProcess } = require("./simulator-process");
 const Runtime = require("sdk/system/runtime");
 const URL = require("sdk/url");
 
 const ROOT_URI = require("addon").uri;
 const PROFILE_URL = ROOT_URI + "profile/";
 const BIN_URL = ROOT_URI + "b2g/";
 
--- a/b2g/simulator/lib/simulator-process.js
+++ b/b2g/simulator/lib/simulator-process.js
@@ -8,17 +8,17 @@
 const { Cc, Ci, Cu, ChromeWorker } = require("chrome");
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 const Environment = require("sdk/system/environment").env;
 const Runtime = require("sdk/system/runtime");
 const Subprocess = require("sdk/system/child_process/subprocess");
 const { Promise: promise } = Cu.import("resource://gre/modules/Promise.jsm", {});
-const { EventEmitter } = Cu.import("resource://gre/modules/devtools/event-emitter.js", {});
+const { EventEmitter } = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js", {});
 
 
 // Log subprocess error and debug messages to the console.  This logs messages
 // for all consumers of the API.  We trim the messages because they sometimes
 // have trailing newlines.  And note that registerLogHandler actually registers
 // an error handler, despite its name.
 Subprocess.registerLogHandler(
   function(s) console.error("subprocess: " + s.trim())
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -176,23 +176,23 @@ XPCOMUtils.defineLazyGetter(this, "Popup
   } catch (ex) {
     Cu.reportError(ex);
     return null;
   }
 });
 
 XPCOMUtils.defineLazyGetter(this, "DeveloperToolbar", function() {
   let tmp = {};
-  Cu.import("resource:///modules/devtools/DeveloperToolbar.jsm", tmp);
+  Cu.import("resource:///modules/devtools/client/shared/DeveloperToolbar.jsm", tmp);
   return new tmp.DeveloperToolbar(window, document.getElementById("developer-toolbar"));
 });
 
 XPCOMUtils.defineLazyGetter(this, "BrowserToolboxProcess", function() {
   let tmp = {};
-  Cu.import("resource:///modules/devtools/ToolboxProcess.jsm", tmp);
+  Cu.import("resource:///modules/devtools/client/framework/ToolboxProcess.jsm", tmp);
   return tmp.BrowserToolboxProcess;
 });
 
 XPCOMUtils.defineLazyModuleGetter(this, "Social",
   "resource:///modules/Social.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "PageThumbs",
   "resource://gre/modules/PageThumbs.jsm");
@@ -7684,25 +7684,25 @@ var TabContextMenu = {
         this._updateToggleMuteMenuItem(tab,
           attr => aEvent.detail.changed.indexOf(attr) >= 0);
         break;
     }
   }
 };
 
 XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
-                                  "resource:///modules/devtools/gDevTools.jsm");
+                                  "resource:///modules/devtools/client/framework/gDevTools.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "gDevToolsBrowser",
-                                  "resource:///modules/devtools/gDevTools.jsm");
+                                  "resource:///modules/devtools/client/framework/gDevTools.jsm");
 
 Object.defineProperty(this, "HUDService", {
   get: function HUDService_getter() {
-    let devtools = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools;
-    return devtools.require("devtools/webconsole/hudservice");
+    let devtools = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {}).devtools;
+    return devtools.require("devtools/client/webconsole/hudservice");
   },
   configurable: true,
   enumerable: true
 });
 
 // Prompt user to restart the browser in safe mode
 function safeModeRestart() {
   if (Services.appinfo.inSafeMode) {
@@ -7763,42 +7763,42 @@ function duplicateTabIn(aTab, where, del
 var Scratchpad = {
   openScratchpad: function SP_openScratchpad() {
     return this.ScratchpadManager.openScratchpad();
   }
 };
 
 XPCOMUtils.defineLazyGetter(Scratchpad, "ScratchpadManager", function() {
   let tmp = {};
-  Cu.import("resource:///modules/devtools/scratchpad-manager.jsm", tmp);
+  Cu.import("resource:///modules/devtools/client/scratchpad/scratchpad-manager.jsm", tmp);
   return tmp.ScratchpadManager;
 });
 
 var ResponsiveUI = {
   toggle: function RUI_toggle() {
     this.ResponsiveUIManager.toggle(window, gBrowser.selectedTab);
   }
 };
 
 XPCOMUtils.defineLazyGetter(ResponsiveUI, "ResponsiveUIManager", function() {
   let tmp = {};
-  Cu.import("resource:///modules/devtools/responsivedesign.jsm", tmp);
+  Cu.import("resource:///modules/devtools/client/responsivedesign/responsivedesign.jsm", tmp);
   return tmp.ResponsiveUIManager;
 });
 
 function openEyedropper() {
   var eyedropper = new this.Eyedropper(this, { context: "menu",
                                                copyOnSelect: true });
   eyedropper.open();
 }
 
 Object.defineProperty(this, "Eyedropper", {
   get: function() {
-    let devtools = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools;
-    return devtools.require("devtools/eyedropper/eyedropper").Eyedropper;
+    let devtools = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {}).devtools;
+    return devtools.require("devtools/client/eyedropper/eyedropper").Eyedropper;
   },
   configurable: true,
   enumerable: true
 });
 
 XPCOMUtils.defineLazyGetter(window, "gShowPageResizers", function () {
 #ifdef XP_WIN
   // Only show resizers on Windows 2000 and XP
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -550,17 +550,17 @@ nsContextMenu.prototype = {
     popup.insertBefore(fragment, insertBeforeElement);
   },
 
   openPasswordManager: function() {
     LoginHelper.openPasswordManager(window, gContextMenuContentData.documentURIObject.host);
   },
 
   inspectNode: function CM_inspectNode() {
-    let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+    let {devtools} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
     let gBrowser = this.browser.ownerDocument.defaultView.gBrowser;
     let tt = devtools.TargetFactory.forTab(gBrowser.selectedTab);
     return gDevTools.showToolbox(tt, "inspector").then(function(toolbox) {
       let inspector = toolbox.getCurrentPanel();
       if (this.isRemote) {
         this.browser.messageManager.sendAsyncMessage("debug:inspect", {}, {node: this.target});
         inspector.walker.findInspectingNode().then(nodeFront => {
           inspector.selection.setNodeFront(nodeFront, "browser-context-menu");
--- a/browser/components/customizableui/logging.js
+++ b/browser/components/customizableui/logging.js
@@ -1,16 +1,16 @@
 #if 0
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #endif
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 
 var gDebug = false;
 try {
   gDebug = Services.prefs.getBoolPref(kPrefCustomizationDebug);
 } catch (e) {}
 
 function LOG(...args) {
   if (gDebug) {
--- a/browser/components/downloads/DownloadsCommon.jsm
+++ b/browser/components/downloads/DownloadsCommon.jsm
@@ -59,17 +59,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
                                   "resource:///modules/RecentWindow.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
                                   "resource://gre/modules/Promise.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Task",
                                   "resource://gre/modules/Task.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "DownloadsLogger", () => {
-  let { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
+  let { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
   let consoleOptions = {
     maxLogLevelPref: "browser.download.loglevel",
     prefix: "Downloads"
   };
   return new ConsoleAPI(consoleOptions);
 });
 
 const nsIDM = Ci.nsIDownloadManager;
--- a/browser/components/extensions/ext-browserAction.js
+++ b/browser/components/extensions/ext-browserAction.js
@@ -1,12 +1,12 @@
 XPCOMUtils.defineLazyModuleGetter(this, "CustomizableUI",
                                   "resource:///modules/CustomizableUI.jsm");
 
-Cu.import("resource://gre/modules/devtools/event-emitter.js");
+Cu.import("resource://gre/modules/devtools/shared/event-emitter.js");
 
 Cu.import("resource://gre/modules/ExtensionUtils.jsm");
 var {
   EventManager,
   DefaultWeakMap,
   ignoreEvent,
   runSafe,
 } = ExtensionUtils;
--- a/browser/components/loop/modules/LoopContacts.jsm
+++ b/browser/components/loop/modules/LoopContacts.jsm
@@ -2,27 +2,27 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-                                  "resource://gre/modules/devtools/Console.jsm");
+                                  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "LoopStorage",
                                   "resource:///modules/loop/LoopStorage.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
                                   "resource://gre/modules/Promise.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "CardDavImporter",
                                   "resource:///modules/loop/CardDavImporter.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "GoogleImporter",
                                   "resource:///modules/loop/GoogleImporter.jsm");
 XPCOMUtils.defineLazyGetter(this, "eventEmitter", function() {
-  const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js", {});
+  const {EventEmitter} = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js", {});
   return new EventEmitter();
 });
 
 this.EXPORTED_SYMBOLS = ["LoopContacts"];
 
 const kObjectStoreName = "contacts";
 
 /*
--- a/browser/components/loop/modules/LoopRooms.jsm
+++ b/browser/components/loop/modules/LoopRooms.jsm
@@ -14,17 +14,17 @@ const {MozLoopService, LOOP_SESSION_TYPE
 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
                                   "resource://gre/modules/Promise.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "CommonUtils",
                                   "resource://services-common/utils.js");
 XPCOMUtils.defineLazyModuleGetter(this, "WebChannel",
                                   "resource://gre/modules/WebChannel.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "eventEmitter", function() {
-  const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js", {});
+  const {EventEmitter} = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js", {});
   return new EventEmitter();
 });
 XPCOMUtils.defineLazyGetter(this, "gLoopBundle", function() {
   return Services.strings.createBundle("chrome://browser/locale/loop/loop.properties");
 });
 
 XPCOMUtils.defineLazyModuleGetter(this, "LoopRoomsCache",
   "resource:///modules/loop/LoopRoomsCache.jsm");
--- a/browser/components/loop/modules/LoopStorage.jsm
+++ b/browser/components/loop/modules/LoopStorage.jsm
@@ -14,17 +14,17 @@ try {
     console.log("Failed to import indexedDB; if this isn't a unit test," +
                 " something is wrong", ex);
   }
 }
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyGetter(this, "eventEmitter", function() {
-  const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js", {});
+  const {EventEmitter} = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js", {});
   return new EventEmitter();
 });
 
 this.EXPORTED_SYMBOLS = ["LoopStorage"];
 
 const kDatabasePrefix = "loop-";
 const kDefaultDatabaseName = "default";
 var gDatabaseName = kDatabasePrefix + kDefaultDatabaseName;
--- a/browser/components/loop/modules/MozLoopService.jsm
+++ b/browser/components/loop/modules/MozLoopService.jsm
@@ -159,17 +159,17 @@ XPCOMUtils.defineLazyServiceGetter(this,
                                    "nsIDNSService");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gWM",
                                    "@mozilla.org/appshell/window-mediator;1",
                                    "nsIWindowMediator");
 
 // Create a new instance of the ConsoleAPI so we can control the maxLogLevel with a pref.
 XPCOMUtils.defineLazyGetter(this, "log", () => {
-  let ConsoleAPI = Cu.import("resource://gre/modules/devtools/Console.jsm", {}).ConsoleAPI;
+  let ConsoleAPI = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {}).ConsoleAPI;
   let consoleOptions = {
     maxLogLevelPref: PREF_LOG_LEVEL,
     prefix: "Loop"
   };
   return new ConsoleAPI(consoleOptions);
 });
 
 function setJSONPref(aName, aValue) {
--- a/browser/components/sessionstore/SessionFile.jsm
+++ b/browser/components/sessionstore/SessionFile.jsm
@@ -33,17 +33,17 @@ const Cr = Components.results;
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/osfile.jsm");
 Cu.import("resource://gre/modules/Promise.jsm");
 Cu.import("resource://gre/modules/AsyncShutdown.jsm");
 Cu.import("resource://gre/modules/Preferences.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "RunState",
   "resource:///modules/sessionstore/RunState.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
   "resource://gre/modules/TelemetryStopwatch.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Task",
   "resource://gre/modules/Task.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "Telemetry",
   "@mozilla.org/base/telemetry;1", "nsITelemetry");
--- a/browser/components/sessionstore/SessionSaver.jsm
+++ b/browser/components/sessionstore/SessionSaver.jsm
@@ -13,17 +13,17 @@ const Ci = Components.interfaces;
 Cu.import("resource://gre/modules/Timer.jsm", this);
 Cu.import("resource://gre/modules/Services.jsm", this);
 Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
 Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this);
 
 XPCOMUtils.defineLazyModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PrivacyFilter",
   "resource:///modules/sessionstore/PrivacyFilter.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionStore",
   "resource:///modules/sessionstore/SessionStore.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionFile",
   "resource:///modules/sessionstore/SessionFile.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
   "resource://gre/modules/PrivateBrowsingUtils.jsm");
--- a/browser/components/sessionstore/SessionStorage.jsm
+++ b/browser/components/sessionstore/SessionStorage.jsm
@@ -9,17 +9,17 @@ this.EXPORTED_SYMBOLS = ["SessionStorage
 const Cu = Components.utils;
 const Ci = Components.interfaces;
 
 Cu.import("resource://gre/modules/BrowserUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 
 // Returns the principal for a given |frame| contained in a given |docShell|.
 function getPrincipalForFrame(docShell, frame) {
   let ssm = Services.scriptSecurityManager;
   let uri = frame.document.documentURIObject;
   return ssm.getDocShellCodebasePrincipal(uri, docShell);
 }
 
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -123,30 +123,30 @@ Cu.import("resource://gre/modules/debug.
 
 XPCOMUtils.defineLazyServiceGetter(this, "gSessionStartup",
   "@mozilla.org/browser/sessionstartup;1", "nsISessionStartup");
 XPCOMUtils.defineLazyServiceGetter(this, "gScreenManager",
   "@mozilla.org/gfx/screenmanager;1", "nsIScreenManager");
 XPCOMUtils.defineLazyServiceGetter(this, "Telemetry",
   "@mozilla.org/base/telemetry;1", "nsITelemetry");
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
   "resource:///modules/RecentWindow.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "GlobalState",
   "resource:///modules/sessionstore/GlobalState.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PrivacyFilter",
   "resource:///modules/sessionstore/PrivacyFilter.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "RunState",
   "resource:///modules/sessionstore/RunState.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "ScratchpadManager",
-  "resource:///modules/devtools/scratchpad-manager.jsm");
+  "resource:///modules/devtools/client/scratchpad/scratchpad-manager.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionSaver",
   "resource:///modules/sessionstore/SessionSaver.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionCookies",
   "resource:///modules/sessionstore/SessionCookies.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionFile",
   "resource:///modules/sessionstore/SessionFile.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "TabAttributes",
   "resource:///modules/sessionstore/TabAttributes.jsm");
--- a/browser/components/sessionstore/TabState.jsm
+++ b/browser/components/sessionstore/TabState.jsm
@@ -8,17 +8,17 @@ this.EXPORTED_SYMBOLS = ["TabState"];
 
 const Cu = Components.utils;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
 Cu.import("resource://gre/modules/Promise.jsm", this);
 Cu.import("resource://gre/modules/Task.jsm", this);
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PrivacyFilter",
   "resource:///modules/sessionstore/PrivacyFilter.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "TabStateCache",
   "resource:///modules/sessionstore/TabStateCache.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "TabAttributes",
   "resource:///modules/sessionstore/TabAttributes.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Utils",
   "resource:///modules/sessionstore/Utils.jsm");
--- a/browser/components/sessionstore/nsSessionStartup.js
+++ b/browser/components/sessionstore/nsSessionStartup.js
@@ -37,17 +37,17 @@ const Cr = Components.results;
 const Cu = Components.utils;
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/TelemetryStopwatch.jsm");
 Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 Cu.import("resource://gre/modules/Promise.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionFile",
   "resource:///modules/sessionstore/SessionFile.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "CrashMonitor",
   "resource://gre/modules/CrashMonitor.jsm");
 
 const STATE_RUNNING_STR = "running";
 
 // 'browser.startup.page' preference value to resume the previous session.
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -68,17 +68,17 @@ const BUCKET_TIMESTEPS    = [
 // Time after which seen Page IDs expire.
 const SEENPAGEID_EXPIRY  = 8 * 7 * 24 * 60 * 60 * 1000; // 8 weeks.
 
 // Prefix for any target matching a search engine.
 const TARGET_SEARCHENGINE_PREFIX = "searchEngine-";
 
 // Create a new instance of the ConsoleAPI so we can control the maxLogLevel with a pref.
 XPCOMUtils.defineLazyGetter(this, "log", () => {
-  let ConsoleAPI = Cu.import("resource://gre/modules/devtools/Console.jsm", {}).ConsoleAPI;
+  let ConsoleAPI = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {}).ConsoleAPI;
   let consoleOptions = {
     maxLogLevelPref: PREF_LOG_LEVEL,
     prefix: "UITour",
   };
   return new ConsoleAPI(consoleOptions);
 });
 
 this.UITour = {
--- a/devtools/client/animationinspector/animation-controller.js
+++ b/devtools/client/animationinspector/animation-controller.js
@@ -6,23 +6,23 @@
 /* globals ViewHelpers, Task, AnimationsPanel, promise, EventEmitter,
    AnimationsFront */
 
 "use strict";
 
 const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
 
 Cu.import("resource://gre/modules/Task.jsm");
-var { loader, require } = Cu.import("resource://gre/modules/devtools/Loader.jsm");
-Cu.import("resource://gre/modules/devtools/Console.jsm");
-Cu.import("resource:///modules/devtools/ViewHelpers.jsm");
+var { loader, require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm");
+Cu.import("resource://gre/modules/devtools/shared/Console.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/ViewHelpers.jsm");
 
 loader.lazyRequireGetter(this, "promise");
 loader.lazyRequireGetter(this, "EventEmitter",
-                               "devtools/toolkit/event-emitter");
+                               "devtools/shared/event-emitter");
 loader.lazyRequireGetter(this, "AnimationsFront",
                                "devtools/server/actors/animation", true);
 
 const STRINGS_URI = "chrome://browser/locale/devtools/animationinspector.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 // Global toolbox/inspector, set when startup is called.
 var gToolbox, gInspector;
--- a/devtools/client/animationinspector/animation-panel.js
+++ b/devtools/client/animationinspector/animation-panel.js
@@ -3,17 +3,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 /* globals AnimationsController, document, performance, promise,
    gToolbox, gInspector, requestAnimationFrame, cancelAnimationFrame, L10N */
 
 "use strict";
 
-const {AnimationsTimeline} = require("devtools/animationinspector/components");
+const {AnimationsTimeline} = require("devtools/client/animationinspector/components");
 
 /**
  * The main animations panel UI.
  */
 var AnimationsPanel = {
   UI_UPDATED_EVENT: "ui-updated",
   PANEL_INITIALIZED: "panel-initialized",
 
--- a/devtools/client/animationinspector/components.js
+++ b/devtools/client/animationinspector/components.js
@@ -16,23 +16,23 @@
 // 3. render the component, passing in some sort of state:
 //    This may be called over and over again when the state changes, to update
 //    the component output.
 //    c.render(state);
 // 4. destroy the component:
 //    c.destroy();
 
 const {Cu} = require("chrome");
-Cu.import("resource:///modules/devtools/ViewHelpers.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/ViewHelpers.jsm");
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 const {
   createNode,
   drawGraphElementBackground,
   findOptimalTimeInterval
-} = require("devtools/animationinspector/utils");
+} = require("devtools/client/animationinspector/utils");
 
 const STRINGS_URI = "chrome://browser/locale/devtools/animationinspector.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 const MILLIS_TIME_FORMAT_MAX_DURATION = 4000;
 // The minimum spacing between 2 time graduation headers in the timeline (px).
 const TIME_GRADUATION_MIN_SPACING = 40;
 
 /**
--- a/devtools/client/animationinspector/moz.build
+++ b/devtools/client/animationinspector/moz.build
@@ -2,12 +2,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
 XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
 
-EXTRA_JS_MODULES.devtools.animationinspector += [
+DevToolsModules(
     'components.js',
     'utils.js',
-]
+)
--- a/devtools/client/animationinspector/test/browser_animation_timeline_header.js
+++ b/devtools/client/animationinspector/test/browser_animation_timeline_header.js
@@ -1,18 +1,18 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Check that the timeline shows correct time graduations in the header.
 
-const {findOptimalTimeInterval} = require("devtools/animationinspector/utils");
-const {TimeScale} = require("devtools/animationinspector/components");
+const {findOptimalTimeInterval} = require("devtools/client/animationinspector/utils");
+const {TimeScale} = require("devtools/client/animationinspector/components");
 // Should be kept in sync with TIME_GRADUATION_MIN_SPACING in components.js
 const TIME_GRADUATION_MIN_SPACING = 40;
 
 add_task(function*() {
   yield addTab(TEST_URL_ROOT + "doc_simple_animation.html");
   let {panel} = yield openAnimationInspector();
 
   let timeline = panel.animationsTimelineComponent;
--- a/devtools/client/animationinspector/test/head.js
+++ b/devtools/client/animationinspector/test/head.js
@@ -1,22 +1,22 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 const Cu = Components.utils;
-const {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const {gDevTools} = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const promise = require("promise");
-const {TargetFactory} = require("devtools/framework/target");
-const {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
-const {ViewHelpers} = Cu.import("resource:///modules/devtools/ViewHelpers.jsm", {});
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const {TargetFactory} = require("devtools/client/framework/target");
+const {console} = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
+const {ViewHelpers} = Cu.import("resource:///modules/devtools/client/shared/widgets/ViewHelpers.jsm", {});
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 // All tests are asynchronous
 waitForExplicitFinish();
 
 const TEST_URL_ROOT = "http://example.com/browser/browser/devtools/animationinspector/test/";
 const ROOT_TEST_DIR = getRootDirectory(gTestPath);
 const FRAME_SCRIPT_URL = ROOT_TEST_DIR + "doc_frame_script.js";
 const COMMON_FRAME_SCRIPT_URL = "chrome://devtools/content/shared/frame-script-utils.js";
--- a/devtools/client/animationinspector/test/unit/test_findOptimalTimeInterval.js
+++ b/devtools/client/animationinspector/test/unit/test_findOptimalTimeInterval.js
@@ -2,18 +2,18 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 /* eslint no-eval:0 */
 
 "use strict";
 
 const Cu = Components.utils;
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-const {findOptimalTimeInterval} = require("devtools/animationinspector/utils");
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+const {findOptimalTimeInterval} = require("devtools/client/animationinspector/utils");
 
 // This test array contains objects that are used to test the
 // findOptimalTimeInterval function. Each object should have the following
 // properties:
 // - desc: an optional string that will be printed out
 // - timeScale: a number that represents how many pixels is 1ms
 // - minSpacing: an optional number that represents the minim space between 2
 //   time graduations
--- a/devtools/client/animationinspector/test/unit/test_timeScale.js
+++ b/devtools/client/animationinspector/test/unit/test_timeScale.js
@@ -1,18 +1,18 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 const Cu = Components.utils;
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-const {TimeScale} = require("devtools/animationinspector/components");
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+const {TimeScale} = require("devtools/client/animationinspector/components");
 
 const TEST_ANIMATIONS = [{
   desc: "Testing a few standard animations",
   animations: [{
     previousStartTime: 500,
     delay: 0,
     duration: 1000,
     iterationCount: 1,
--- a/devtools/client/app-manager/app-projects.js
+++ b/devtools/client/app-manager/app-projects.js
@@ -1,13 +1,13 @@
 const {Cc,Ci,Cu,Cr} = require("chrome");
-const ObservableObject = require("devtools/shared/observable-object");
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
+const ObservableObject = require("devtools/client/shared/observable-object");
+const promise = require("devtools/shared/deprecated-sync-thenables");
 
-const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js");
+const {EventEmitter} = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js");
 const {generateUUID} = Cc['@mozilla.org/uuid-generator;1'].getService(Ci.nsIUUIDGenerator);
 const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
 const { indexedDB } = require("sdk/indexed-db");
 
 /**
  * IndexedDB wrapper that just save project objects
  *
  * The only constraint is that project objects have to have
--- a/devtools/client/app-manager/app-validator.js
+++ b/devtools/client/app-manager/app-validator.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 var {Ci,Cu,CC} = require("chrome");
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
+const promise = require("devtools/shared/deprecated-sync-thenables");
 
 const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 var XMLHttpRequest = CC("@mozilla.org/xmlextras/xmlhttprequest;1");
 var strings = Services.strings.createBundle("chrome://browser/locale/devtools/app-manager.properties");
 
 function AppValidator({ type, location }) {
--- a/devtools/client/app-manager/builtin-adb-store.js
+++ b/devtools/client/app-manager/builtin-adb-store.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {Cu} = require("chrome");
-const ObservableObject = require("devtools/shared/observable-object");
-const {Devices} = Cu.import("resource://gre/modules/devtools/Devices.jsm");
+const ObservableObject = require("devtools/client/shared/observable-object");
+const {Devices} = Cu.import("resource://gre/modules/devtools/shared/apps/Devices.jsm");
 
 var store = new ObservableObject({versions:[]});
 
 function feedStore() {
   store.object.available = Devices.helperAddonInstalled;
   store.object.devices = Devices.available().map(n => {
     return {name:n}
   });
--- a/devtools/client/app-manager/connection-store.js
+++ b/devtools/client/app-manager/connection-store.js
@@ -1,14 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const ObservableObject = require("devtools/shared/observable-object");
-const {Connection} = require("devtools/client/connection-manager");
+const ObservableObject = require("devtools/client/shared/observable-object");
+const {Connection} = require("devtools/shared/client/connection-manager");
 
 const _knownConnectionStores = new WeakMap();
 
 var ConnectionStore;
 
 module.exports = ConnectionStore = function(connection) {
   // If we already know about this connection,
   // let's re-use the existing store.
--- a/devtools/client/app-manager/content/connection-footer.js
+++ b/devtools/client/app-manager/content/connection-footer.js
@@ -1,27 +1,27 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const Cu = Components.utils;
 const Ci = Components.interfaces;
 Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource:///modules/devtools/gDevTools.jsm");
+Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
 
-const {Simulator} = Cu.import("resource://gre/modules/devtools/Simulator.jsm")
-const {Devices} = Cu.import("resource://gre/modules/devtools/Devices.jsm");
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const {Simulator} = Cu.import("resource://gre/modules/devtools/shared/apps/Simulator.jsm")
+const {Devices} = Cu.import("resource://gre/modules/devtools/shared/apps/Devices.jsm");
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
-const {ConnectionManager, Connection} = require("devtools/client/connection-manager");
+const {ConnectionManager, Connection} = require("devtools/shared/client/connection-manager");
 const {getDeviceFront} = require("devtools/server/actors/device");
-const ConnectionStore = require("devtools/app-manager/connection-store");
-const DeviceStore = require("devtools/app-manager/device-store");
-const simulatorsStore = require("devtools/app-manager/simulators-store");
-const adbStore = require("devtools/app-manager/builtin-adb-store");
+const ConnectionStore = require("devtools/client/app-manager/connection-store");
+const DeviceStore = require("devtools/client/app-manager/device-store");
+const simulatorsStore = require("devtools/client/app-manager/simulators-store");
+const adbStore = require("devtools/client/app-manager/builtin-adb-store");
 
 window.addEventListener("unload", function onUnload() {
   window.removeEventListener("unload", onUnload);
   UI.destroy();
 });
 
 var UI = {
   init: function() {
--- a/devtools/client/app-manager/content/device.js
+++ b/devtools/client/app-manager/content/device.js
@@ -1,27 +1,27 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const Cu = Components.utils;
 Cu.import("resource://gre/modules/Services.jsm");
-const {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
+const {gDevTools} = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
 
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-const {TargetFactory} = require("devtools/framework/target");
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+const {TargetFactory} = require("devtools/client/framework/target");
 
 const {ConnectionManager, Connection}
-  = require("devtools/client/connection-manager");
+  = require("devtools/shared/client/connection-manager");
 const {getDeviceFront} = require("devtools/server/actors/device");
 const {getTargetForApp, launchApp, closeApp}
-  = require("devtools/app-actor-front");
-const DeviceStore = require("devtools/app-manager/device-store");
-const WebappsStore = require("devtools/app-manager/webapps-store");
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
+  = require("devtools/shared/apps/app-actor-front");
+const DeviceStore = require("devtools/client/app-manager/device-store");
+const WebappsStore = require("devtools/client/app-manager/webapps-store");
+const promise = require("devtools/shared/deprecated-sync-thenables");
 const DEFAULT_APP_ICON = "chrome://browser/skin/devtools/app-manager/default-app-icon.png";
 
 window.addEventListener("message", function(event) {
   try {
     let message = JSON.parse(event.data);
     if (message.name == "connection") {
       let cid = parseInt(message.cid);
       for (let c of ConnectionManager.connections) {
--- a/devtools/client/app-manager/content/index.js
+++ b/devtools/client/app-manager/content/index.js
@@ -1,18 +1,18 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {utils: Cu, interfaces: Ci} = Components;
-Cu.import("resource:///modules/devtools/gDevTools.jsm");
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-const {Toolbox} = require("devtools/framework/toolbox");
-const {ConnectionManager, Connection} = require("devtools/client/connection-manager");
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
+Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+const {Toolbox} = require("devtools/client/framework/toolbox");
+const {ConnectionManager, Connection} = require("devtools/shared/client/connection-manager");
+const promise = require("devtools/shared/deprecated-sync-thenables");
 const prefs = require("sdk/preferences/service");
 const Services = require("Services");
 const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/app-manager.properties");
 
 var UI = {
   _toolboxTabCursor: 0,
   _handledTargets: new Map(),
 
--- a/devtools/client/app-manager/content/manifest-editor.js
+++ b/devtools/client/app-manager/content/manifest-editor.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 Cu.import("resource://gre/modules/osfile.jsm");
 const {VariablesView} =
-  Cu.import("resource:///modules/devtools/VariablesView.jsm", {});
+  Cu.import("resource:///modules/devtools/client/shared/widgets/VariablesView.jsm", {});
 
 const VARIABLES_VIEW_URL =
   "chrome://devtools/content/shared/widgets/VariablesView.xul";
 
 function ManifestEditor(project) {
   this.project = project;
   this._onContainerReady = this._onContainerReady.bind(this);
   this._onEval = this._onEval.bind(this);
--- a/devtools/client/app-manager/content/projects.js
+++ b/devtools/client/app-manager/content/projects.js
@@ -1,28 +1,28 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 const Cr = Components.results;
-Cu.import("resource:///modules/devtools/gDevTools.jsm");
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-const {ConnectionManager, Connection} = require("devtools/client/connection-manager");
-const {AppProjects} = require("devtools/app-manager/app-projects");
-const {AppValidator} = require("devtools/app-manager/app-validator");
+Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+const {ConnectionManager, Connection} = require("devtools/shared/client/connection-manager");
+const {AppProjects} = require("devtools/client/app-manager/app-projects");
+const {AppValidator} = require("devtools/client/app-manager/app-validator");
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
 const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
 const {installHosted, installPackaged, getTargetForApp,
-       reloadApp, launchApp, closeApp} = require("devtools/app-actor-front");
-const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js");
+       reloadApp, launchApp, closeApp} = require("devtools/shared/apps/app-actor-front");
+const {EventEmitter} = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js");
 
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
+const promise = require("devtools/shared/deprecated-sync-thenables");
 
 const MANIFEST_EDITOR_ENABLED = "devtools.appmanager.manifestEditor.enabled";
 
 window.addEventListener("message", function(event) {
   try {
     let json = JSON.parse(event.data);
     if (json.name == "connection") {
       let cid = parseInt(json.cid);
--- a/devtools/client/app-manager/content/utils.js
+++ b/devtools/client/app-manager/content/utils.js
@@ -9,18 +9,18 @@
  *  . mergeStores: merge several store into one.
  *  . l10n: resolves strings from app-manager.properties.
  *
  */
 
 var Utils = (function() {
   const Cu = Components.utils;
   const {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
-  const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-  const EventEmitter = require("devtools/toolkit/event-emitter");
+  const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+  const EventEmitter = require("devtools/shared/event-emitter");
 
 
   function _createSetEventForwarder(key, finalStore) {
     return function(event, path, value) {
       finalStore.emit("set", [key].concat(path), value);
     };
   }
 
--- a/devtools/client/app-manager/device-store.js
+++ b/devtools/client/app-manager/device-store.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const ObservableObject = require("devtools/shared/observable-object");
+const ObservableObject = require("devtools/client/shared/observable-object");
 const {getDeviceFront} = require("devtools/server/actors/device");
-const {Connection} = require("devtools/client/connection-manager");
+const {Connection} = require("devtools/shared/client/connection-manager");
 
 const {Cu} = require("chrome");
 
 const _knownDeviceStores = new WeakMap();
 
 var DeviceStore;
 
 module.exports = DeviceStore = function(connection) {
--- a/devtools/client/app-manager/moz.build
+++ b/devtools/client/app-manager/moz.build
@@ -2,17 +2,17 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
 MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini']
 
-EXTRA_JS_MODULES.devtools["app-manager"] += [
+DevToolsModules(
     'app-projects.js',
     'app-validator.js',
     'builtin-adb-store.js',
     'connection-store.js',
     'device-store.js',
     'simulators-store.js',
     'webapps-store.js',
-]
+)
--- a/devtools/client/app-manager/simulators-store.js
+++ b/devtools/client/app-manager/simulators-store.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {Cu} = require("chrome");
-const ObservableObject = require("devtools/shared/observable-object");
-const {Simulator} = Cu.import("resource://gre/modules/devtools/Simulator.jsm");
+const ObservableObject = require("devtools/client/shared/observable-object");
+const {Simulator} = Cu.import("resource://gre/modules/devtools/shared/apps/Simulator.jsm");
 
 var store = new ObservableObject({versions:[]});
 
 function feedStore() {
   store.object.versions = Simulator.availableNames().map(name => {
     let simulator = Simulator.getByName(name);
     return {
       version: name,
--- a/devtools/client/app-manager/test/head.js
+++ b/devtools/client/app-manager/test/head.js
@@ -1,21 +1,21 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 const {utils: Cu, classes: Cc, interfaces: Ci} = Components;
 
 const {Promise: promise} =
-  Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {});
+  Cu.import("resource://gre/modules/devtools/shared/deprecated-sync-thenables.js", {});
 const {require} =
-  Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+  Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
-const {AppProjects} = require("devtools/app-manager/app-projects");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const {AppProjects} = require("devtools/client/app-manager/app-projects");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 const APP_MANAGER_URL = "about:app-manager";
 const TEST_BASE =
   "chrome://mochitests/content/browser/browser/devtools/app-manager/test/";
 const HOSTED_APP_MANIFEST = TEST_BASE + "hosted_app.manifest";
 
 const PACKAGED_APP_DIR_PATH = getTestFilePath(".");
 
--- a/devtools/client/app-manager/test/test_app_validator.html
+++ b/devtools/client/app-manager/test/test_app_validator.html
@@ -13,19 +13,19 @@
 
   <body>
 
     <script type="application/javascript;version=1.8">
     const Cu = Components.utils;
     const Cc = Components.classes;
     const Ci = Components.interfaces;
     Cu.import("resource://testing-common/httpd.js");
-    const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+    const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
-    const {AppValidator} = require("devtools/app-manager/app-validator");
+    const {AppValidator} = require("devtools/client/app-manager/app-validator");
     const {Services} = Cu.import("resource://gre/modules/Services.jsm");
     const nsFile = Components.Constructor("@mozilla.org/file/local;1",
                                            "nsILocalFile", "initWithPath");
     const cr = Cc["@mozilla.org/chrome/chrome-registry;1"]
                  .getService(Ci.nsIChromeRegistry);
     const strings = Services.strings.createBundle("chrome://browser/locale/devtools/app-manager.properties");
     let httpserver, origin;
 
--- a/devtools/client/app-manager/test/test_connection_store.html
+++ b/devtools/client/app-manager/test/test_connection_store.html
@@ -20,32 +20,32 @@ Bug 901519 - [app manager] data store fo
       <span id="status" template='{"type":"textContent","path":"status"}'></span>
       <span id="host" template='{"type":"textContent","path":"host"}'></span>
       <span id="port" template='{"type":"textContent","path":"port"}'></span>
     </div>
 
     <script type="application/javascript;version=1.8" src="chrome://devtools/content/app-manager/content/template.js"></script>
     <script type="application/javascript;version=1.8">
       const Cu = Components.utils;
-      const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm");
+      const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm");
       const {DebuggerServer} = require("devtools/server/main");
 
       if (!DebuggerServer.initialized) {
         DebuggerServer.init();
         DebuggerServer.addBrowserActors();
       }
 
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
         Cu.import("resource://gre/modules/Services.jsm");
-        Cu.import("resource:///modules/devtools/gDevTools.jsm");
+        Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
 
-        const {ConnectionManager} = require("devtools/client/connection-manager");
-        const ConnectionStore = require("devtools/app-manager/connection-store");
+        const {ConnectionManager} = require("devtools/shared/client/connection-manager");
+        const ConnectionStore = require("devtools/client/app-manager/connection-store");
 
         let connection = ConnectionManager.createConnection();
         let store = new ConnectionStore(connection);
 
         let root = document.querySelector("#root");
         let status = root.querySelector("#status");
         let host = root.querySelector("#host");
         let port = root.querySelector("#port");
--- a/devtools/client/app-manager/test/test_device_store.html
+++ b/devtools/client/app-manager/test/test_device_store.html
@@ -14,36 +14,36 @@ Bug 901520 - [app manager] data store fo
     <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   </head>
 
   <body>
 
     <script type="application/javascript;version=1.8" src="chrome://devtools/content/app-manager/content/template.js"></script>
     <script type="application/javascript;version=1.8">
       const Cu = Components.utils;
-      const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm");
+      const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm");
       const {DebuggerServer} = require("devtools/server/main");
 
       if (!DebuggerServer.initialized) {
         DebuggerServer.init();
         DebuggerServer.addBrowserActors();
       }
 
       function compare(o1, o2, msg) {
         is(JSON.stringify(o1), JSON.stringify(o2), msg);
       }
 
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
         Cu.import("resource://gre/modules/Services.jsm");
-        Cu.import("resource:///modules/devtools/gDevTools.jsm");
+        Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
 
-        const {ConnectionManager} = require("devtools/client/connection-manager");
-        const DeviceStore = require("devtools/app-manager/device-store");
+        const {ConnectionManager} = require("devtools/shared/client/connection-manager");
+        const DeviceStore = require("devtools/client/app-manager/device-store");
 
         let {getDeviceFront} = require("devtools/server/actors/device");
 
         let connection = ConnectionManager.createConnection();
         let store = new DeviceStore(connection);
 
         connection.once("connected", function() {
           store.on("set", function check(event, path, value) {
--- a/devtools/client/app-manager/test/test_projects_store.html
+++ b/devtools/client/app-manager/test/test_projects_store.html
@@ -17,19 +17,19 @@ Bug 907206 - data store for local apps
   <body>
 
     <script type="application/javascript;version=1.8">
       const Cu = Components.utils;
 
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        const { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+        const { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
-        const { AppProjects } = require("devtools/app-manager/app-projects");
+        const { AppProjects } = require("devtools/client/app-manager/app-projects");
 
         function testHosted(projects) {
           let manifestURL = document.location.href.replace("test_projects_store.html", "hosted_app/webapp.manifest");
           AppProjects.addHosted(manifestURL)
             .then(function (app) {
               is(projects.length, 1,
                  "Hosted app has been added");
               is(projects[0], app);
--- a/devtools/client/app-manager/test/test_remain_connected.html
+++ b/devtools/client/app-manager/test/test_remain_connected.html
@@ -13,36 +13,36 @@ Bug 912646 - Closing app toolbox causes 
     <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
     <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   </head>
 
   <body>
 
     <script type="application/javascript;version=1.8">
       const Cu = Components.utils;
-      const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm");
+      const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm");
       const {DebuggerServer} = require("devtools/server/main");
 
       if (!DebuggerServer.initialized) {
         DebuggerServer.init();
         DebuggerServer.addBrowserActors();
       }
 
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        Cu.import("resource:///modules/devtools/gDevTools.jsm");
+        Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
 
-        const {TargetFactory} = require("devtools/framework/target");
-        const {Toolbox} = require("devtools/framework/toolbox");
+        const {TargetFactory} = require("devtools/client/framework/target");
+        const {Toolbox} = require("devtools/client/framework/toolbox");
 
         const {Connection, ConnectionManager} =
-          require("devtools/client/connection-manager");
+          require("devtools/shared/client/connection-manager");
         const ConnectionStore =
-          require("devtools/app-manager/connection-store");
+          require("devtools/client/app-manager/connection-store");
 
         let connection = ConnectionManager.createConnection();
 
         connection.host = null; // force pipe
         connection.port = null;
 
         let been_through_connecting = false;
         let been_through_connected = false;
--- a/devtools/client/app-manager/test/test_template.html
+++ b/devtools/client/app-manager/test/test_template.html
@@ -153,19 +153,19 @@
   <span template='{"type":"textContent","path":"name"}'></span>
   </template>
 
   <script type="application/javascript;version=1.8" src="chrome://devtools/content/app-manager/content/template.js"></script>
   <script type="application/javascript;version=1.8">
     SimpleTest.waitForExplicitFinish();
 
     const Cu = Components.utils;
-    Cu.import("resource:///modules/devtools/gDevTools.jsm");
-    const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-    const ObservableObject = require("devtools/shared/observable-object");
+    Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
+    const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+    const ObservableObject = require("devtools/client/shared/observable-object");
 
     let data = {
       title: "ttt",
       mop: {
         name: "meh",
       },
       foo1: {
         bar1: [
--- a/devtools/client/app-manager/webapps-store.js
+++ b/devtools/client/app-manager/webapps-store.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-const ObservableObject = require("devtools/shared/observable-object");
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
-const {Connection} = require("devtools/client/connection-manager");
+const ObservableObject = require("devtools/client/shared/observable-object");
+const promise = require("devtools/shared/deprecated-sync-thenables");
+const {Connection} = require("devtools/shared/client/connection-manager");
 
 const {Cu} = require("chrome");
 const _knownWebappsStores = new WeakMap();
 
 var WebappsStore;
 
 module.exports = WebappsStore = function(connection) {
   // If we already know about this connection,
--- a/devtools/client/canvasdebugger/canvasdebugger.js
+++ b/devtools/client/canvasdebugger/canvasdebugger.js
@@ -2,28 +2,28 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource:///modules/devtools/SideMenuWidget.jsm");
-Cu.import("resource:///modules/devtools/ViewHelpers.jsm");
-Cu.import("resource://gre/modules/devtools/Console.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/SideMenuWidget.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/ViewHelpers.jsm");
+Cu.import("resource://gre/modules/devtools/shared/Console.jsm");
 
-const { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const promise = require("promise");
-const EventEmitter = require("devtools/toolkit/event-emitter");
+const EventEmitter = require("devtools/shared/event-emitter");
 const { CallWatcherFront } = require("devtools/server/actors/call-watcher");
 const { CanvasFront } = require("devtools/server/actors/canvas");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
-const Telemetry = require("devtools/shared/telemetry");
+const Telemetry = require("devtools/client/shared/telemetry");
 const telemetry = new Telemetry();
 
 const CANVAS_ACTOR_RECORDING_ATTEMPT = DevToolsUtils.testing ? 500 : 5000;
 
 XPCOMUtils.defineLazyModuleGetter(this, "Task",
   "resource://gre/modules/Task.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "PluralForm",
@@ -31,17 +31,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 
 XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
   "resource://gre/modules/FileUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
   "resource://gre/modules/NetUtil.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "NetworkHelper", function() {
-  return require("devtools/toolkit/webconsole/network-helper");
+  return require("devtools/shared/webconsole/network-helper");
 });
 
 // The panel's window global is an EventEmitter firing the following events:
 const EVENTS = {
   // When the UI is reset from tab navigation.
   UI_RESET: "CanvasDebugger:UIReset",
 
   // When all the animation frame snapshots are removed by the user.
--- a/devtools/client/canvasdebugger/moz.build
+++ b/devtools/client/canvasdebugger/moz.build
@@ -1,10 +1,10 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-EXTRA_JS_MODULES.devtools.canvasdebugger += [
+DevToolsModules(
     'panel.js'
-]
+)
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
--- a/devtools/client/canvasdebugger/panel.js
+++ b/devtools/client/canvasdebugger/panel.js
@@ -2,19 +2,19 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const { Cc, Ci, Cu, Cr } = require("chrome");
 const promise = require("promise");
-const EventEmitter = require("devtools/toolkit/event-emitter");
+const EventEmitter = require("devtools/shared/event-emitter");
 const { CanvasFront } = require("devtools/server/actors/canvas");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 function CanvasDebuggerPanel(iframeWindow, toolbox) {
   this.panelWin = iframeWindow;
   this._toolbox = toolbox;
   this._destroyer = null;
 
   EventEmitter.decorate(this);
 };
--- a/devtools/client/canvasdebugger/test/head.js
+++ b/devtools/client/canvasdebugger/test/head.js
@@ -8,29 +8,29 @@ var { Services } = Cu.import("resource:/
 
 // Disable logging for all the tests. Both the debugger server and frontend will
 // be affected by this pref.
 var gEnableLogging = Services.prefs.getBoolPref("devtools.debugger.log");
 Services.prefs.setBoolPref("devtools.debugger.log", false);
 
 var { generateUUID } = Cc['@mozilla.org/uuid-generator;1'].getService(Ci.nsIUUIDGenerator);
 var { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
-var { gDevTools } = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-var { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+var { gDevTools } = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+var { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
 var promise = require("promise");
-var { DebuggerClient } = require("devtools/toolkit/client/main");
+var { DebuggerClient } = require("devtools/shared/client/main");
 var { DebuggerServer } = require("devtools/server/main");
 var { CallWatcherFront } = require("devtools/server/actors/call-watcher");
 var { CanvasFront } = require("devtools/server/actors/canvas");
 var { setTimeout } = require("sdk/timers");
-var DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
-var TiltGL = require("devtools/tilt/tilt-gl");
-var { TargetFactory } = require("devtools/framework/target");
-var { Toolbox } = require("devtools/framework/toolbox");
+var DevToolsUtils = require("devtools/shared/DevToolsUtils");
+var TiltGL = require("devtools/client/tilt/tilt-gl");
+var { TargetFactory } = require("devtools/client/framework/target");
+var { Toolbox } = require("devtools/client/framework/toolbox");
 var mm = null
 
 const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js";
 const EXAMPLE_URL = "http://example.com/browser/browser/devtools/canvasdebugger/test/";
 const SET_TIMEOUT_URL = EXAMPLE_URL + "doc_settimeout.html";
 const NO_CANVAS_URL = EXAMPLE_URL + "doc_no-canvas.html";
 const RAF_NO_CANVAS_URL = EXAMPLE_URL + "doc_raf-no-canvas.html";
 const SIMPLE_CANVAS_URL = EXAMPLE_URL + "doc_simple-canvas.html";
--- a/devtools/client/commandline/test/browser_cmd_highlight_02.js
+++ b/devtools/client/commandline/test/browser_cmd_highlight_02.js
@@ -31,14 +31,14 @@ function test() {
     yield helpers.closeToolbar(options);
     yield helpers.closeTab(options);
   }).then(finish, helpers.handleError);
 }
 
 function getHighlighterNumber() {
   // Note that this only works as long as gcli tests aren't run with e10s on.
   // To make this e10s ready, execute this in a content frame script instead.
-  return require("devtools/toolkit/gcli/commands/highlight").highlighters.length;
+  return require("devtools/shared/gcli/commands/highlight").highlighters.length;
 }
 
 function* runCommand(cmd, options) {
   yield helpers.audit(options, [{ setup: cmd, exec: {} }]);
 }
--- a/devtools/client/commandline/test/browser_cmd_settings.js
+++ b/devtools/client/commandline/test/browser_cmd_settings.js
@@ -18,17 +18,17 @@ function test() {
 
 function* spawnTest() {
   // Setup
   let options = yield helpers.openTab(TEST_URI);
 
   const { createSystem } = require("gcli/system");
   const system = createSystem({ location: "server" });
 
-  const gcliInit = require("devtools/toolkit/gcli/commands/index");
+  const gcliInit = require("devtools/shared/gcli/commands/index");
   gcliInit.addAllItemsByModule(system);
   yield system.load();
 
   let settings = system.settings;
 
   let hideIntroEnabled = settings.get("devtools.gcli.hideIntro");
   let tabSize = settings.get("devtools.editor.tabsize");
   let remoteHost = settings.get("devtools.debugger.remote-host");
--- a/devtools/client/commandline/test/head.js
+++ b/devtools/client/commandline/test/head.js
@@ -1,18 +1,18 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const TEST_BASE_HTTP = "http://example.com/browser/browser/devtools/commandline/test/";
 const TEST_BASE_HTTPS = "https://example.com/browser/browser/devtools/commandline/test/";
 
-var { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-var { console } = require("resource://gre/modules/devtools/Console.jsm");
-var DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+var { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+var { console } = require("resource://gre/modules/devtools/shared/Console.jsm");
+var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 // Import the GCLI test helper
 var testDir = gTestPath.substr(0, gTestPath.lastIndexOf("/"));
 Services.scriptloader.loadSubScript(testDir + "/helpers.js", this);
 Services.scriptloader.loadSubScript(testDir + "/mockCommands.js", this);
 
 DevToolsUtils.testing = true;
 SimpleTest.registerCleanupFunction(() => {
--- a/devtools/client/commandline/test/helpers.js
+++ b/devtools/client/commandline/test/helpers.js
@@ -17,18 +17,18 @@
 'use strict';
 
 // A copy of this code exists in firefox mochitests. They should be kept
 // in sync. Hence the exports synonym for non AMD contexts.
 var { helpers, assert } = (function() {
 
 var helpers = {};
 
-var { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-var { TargetFactory } = require("devtools/framework/target");
+var { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+var { TargetFactory } = require("devtools/client/framework/target");
 
 var assert = { ok: ok, is: is, log: info };
 var util = require('gcli/util/util');
 var cli = require('gcli/cli');
 var KeyEvent = require('gcli/util/util').KeyEvent;
 
 const { GcliFront } = require("devtools/server/actors/gcli");
 
--- a/devtools/client/debugger/content/actions/event-listeners.js
+++ b/devtools/client/debugger/content/actions/event-listeners.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const constants = require("../constants");
 const { rdpInvoke, asPaused } = require("../utils");
-const { reportException } = require("devtools/toolkit/DevToolsUtils");
+const { reportException } = require("devtools/shared/DevToolsUtils");
 
 const FETCH_EVENT_LISTENERS_DELAY = 200; // ms
 
 function fetchEventListeners() {
   return (dispatch, getState) => {
     // Make sure we"re not sending a batch of closely repeated requests.
     // This can easily happen whenever new sources are fetched.
     setNamedTimeout("event-listeners-fetch", FETCH_EVENT_LISTENERS_DELAY, () => {
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/content/actions/moz.build
@@ -0,0 +1,8 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DevToolsModules(
+    'event-listeners.js',
+)
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/content/moz.build
@@ -0,0 +1,16 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += [
+    'actions',
+    'reducers',
+    'views',
+]
+
+DevToolsModules(
+    'constants.js',
+    'globalActions.js',
+    'utils.js'
+)
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/content/reducers/moz.build
@@ -0,0 +1,9 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DevToolsModules(
+    'event-listeners.js',
+    'index.js'
+)
--- a/devtools/client/debugger/content/utils.js
+++ b/devtools/client/debugger/content/utils.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
-const { promiseInvoke } = require("devtools/async-utils");
-const { reportException } = require("devtools/toolkit/DevToolsUtils");
+const { promiseInvoke } = require("devtools/shared/async-utils");
+const { reportException } = require("devtools/shared/DevToolsUtils");
 
 function rdpInvoke(client, method, ...args) {
   return promiseInvoke(client, method, ...args)
     .then((packet) => {
       let { error, message } = packet;
       if (error) {
         throw new Error(error + ": " + message);
       }
--- a/devtools/client/debugger/content/views/event-listeners-view.js
+++ b/devtools/client/debugger/content/views/event-listeners-view.js
@@ -1,15 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const actions = require('../actions/event-listeners');
-const { bindActionCreators } = require('devtools/shared/vendor/redux');
+const { bindActionCreators } = require('devtools/client/shared/vendor/redux');
 
 /**
  * Functions handling the event listeners UI.
  */
 function EventListenersView(store, DebuggerController) {
   dumpn("EventListenersView was instantiated");
 
   this.actions = bindActionCreators(actions, store.dispatch);
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/content/views/moz.build
@@ -0,0 +1,8 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DevToolsModules(
+    'event-listeners-view.js'
+)
--- a/devtools/client/debugger/debugger-commands.js
+++ b/devtools/client/debugger/debugger-commands.js
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { Cc, Ci, Cu } = require("chrome");
 const l10n = require("gcli/l10n");
 
-loader.lazyImporter(this, "gDevTools", "resource:///modules/devtools/gDevTools.jsm");
+loader.lazyImporter(this, "gDevTools", "resource:///modules/devtools/client/framework/gDevTools.jsm");
 
 /**
  * The commands and converters that are exported to GCLI
  */
 exports.items = [];
 
 /**
  * Utility to get access to the current breakpoint list.
--- a/devtools/client/debugger/debugger-controller.js
+++ b/devtools/client/debugger/debugger-controller.js
@@ -89,51 +89,51 @@ const FRAME_TYPE = {
   NORMAL: 0,
   CONDITIONAL_BREAKPOINT_EVAL: 1,
   WATCH_EXPRESSIONS_EVAL: 2,
   PUBLIC_CLIENT_EVAL: 3
 };
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/devtools/event-emitter.js");
-Cu.import("resource:///modules/devtools/SimpleListWidget.jsm");
-Cu.import("resource:///modules/devtools/BreadcrumbsWidget.jsm");
-Cu.import("resource:///modules/devtools/SideMenuWidget.jsm");
-Cu.import("resource:///modules/devtools/VariablesView.jsm");
-Cu.import("resource:///modules/devtools/VariablesViewController.jsm");
-Cu.import("resource:///modules/devtools/ViewHelpers.jsm");
+Cu.import("resource://gre/modules/devtools/shared/event-emitter.js");
+Cu.import("resource:///modules/devtools/client/shared/widgets/SimpleListWidget.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/BreadcrumbsWidget.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/SideMenuWidget.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/VariablesView.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/VariablesViewController.jsm");
+Cu.import("resource:///modules/devtools/client/shared/widgets/ViewHelpers.jsm");
 
-Cu.import("resource:///modules/devtools/shared/browser-loader.js");
-const require = BrowserLoader("resource:///modules/devtools/debugger/", this).require;
+Cu.import("resource:///modules/devtools/client/shared/browser-loader.js");
+const require = BrowserLoader("resource:///modules/devtools/client/debugger/", this).require;
 
-const {TargetFactory} = require("devtools/framework/target");
-const {Toolbox} = require("devtools/framework/toolbox");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
-const promise = require("devtools/toolkit/deprecated-sync-thenables");
-const Editor = require("devtools/sourceeditor/editor");
-const DebuggerEditor = require("devtools/sourceeditor/debugger.js");
-const {Tooltip} = require("devtools/shared/widgets/Tooltip");
-const FastListWidget = require("devtools/shared/widgets/FastListWidget");
+const {TargetFactory} = require("devtools/client/framework/target");
+const {Toolbox} = require("devtools/client/framework/toolbox");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
+const promise = require("devtools/shared/deprecated-sync-thenables");
+const Editor = require("devtools/client/sourceeditor/editor");
+const DebuggerEditor = require("devtools/client/sourceeditor/debugger");
+const {Tooltip} = require("devtools/client/shared/widgets/Tooltip");
+const FastListWidget = require("devtools/client/shared/widgets/FastListWidget");
 
 XPCOMUtils.defineLazyModuleGetter(this, "Task",
   "resource://gre/modules/Task.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "Parser",
-  "resource:///modules/devtools/Parser.jsm");
+  "resource:///modules/devtools/client/shared/Parser.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "ShortcutUtils",
   "resource://gre/modules/ShortcutUtils.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "clipboardHelper",
   "@mozilla.org/widget/clipboardhelper;1", "nsIClipboardHelper");
 
 Object.defineProperty(this, "NetworkHelper", {
   get: function() {
-    return require("devtools/toolkit/webconsole/network-helper");
+    return require("devtools/shared/webconsole/network-helper");
   },
   configurable: true,
   enumerable: true
 });
 
 /**
  * Object defining the debugger controller components.
  */
--- a/devtools/client/debugger/debugger-view.js
+++ b/devtools/client/debugger/debugger-view.js
@@ -31,21 +31,21 @@ const SEARCH_AUTOFILL = [SEARCH_GLOBAL_F
 const EDITOR_VARIABLE_HOVER_DELAY = 750; // ms
 const EDITOR_VARIABLE_POPUP_POSITION = "topcenter bottomleft";
 const TOOLBAR_ORDER_POPUP_POSITION = "topcenter bottomleft";
 const RESIZE_REFRESH_RATE = 50; // ms
 const PROMISE_DEBUGGER_URL =
   "chrome://devtools/content/promisedebugger/promise-debugger.xhtml";
 
 const debuggerControllerEmit = DebuggerController.emit.bind(DebuggerController);
-const createStore = require("devtools/shared/redux/create-store")();
-const { combineEmittingReducers } = require("devtools/shared/redux/reducers");
+const createStore = require("devtools/client/shared/redux/create-store")();
+const { combineEmittingReducers } = require("devtools/client/shared/redux/reducers");
 const reducers = require("./content/reducers/index");
 const store = createStore(combineEmittingReducers(reducers, debuggerControllerEmit));
-const { NAME: WAIT_UNTIL_NAME } = require("devtools/shared/redux/middleware/wait-service");
+const { NAME: WAIT_UNTIL_NAME } = require("devtools/client/shared/redux/middleware/wait-service");
 
 const services = {
   WAIT_UNTIL: WAIT_UNTIL_NAME
 };
 
 const EventListenersView = require('./content/views/event-listeners-view');
 const actions = require('./content/actions/event-listeners');
 
--- a/devtools/client/debugger/moz.build
+++ b/devtools/client/debugger/moz.build
@@ -1,30 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-EXTRA_JS_MODULES.devtools.debugger += [
-    'debugger-commands.js',
-    'panel.js'
-]
-
-EXTRA_JS_MODULES.devtools.debugger.content += [
-    'content/constants.js',
-    'content/globalActions.js',
-    'content/utils.js'
+DIRS += [
+    'content',
 ]
 
-EXTRA_JS_MODULES.devtools.debugger.content.views += [
-    'content/views/event-listeners-view.js'
-]
-
-EXTRA_JS_MODULES.devtools.debugger.content.reducers += [
-    'content/reducers/event-listeners.js',
-    'content/reducers/index.js'
-]
-
-EXTRA_JS_MODULES.devtools.debugger.content.actions += [
-    'content/actions/event-listeners.js',
-]
+DevToolsModules(
+    'debugger-commands.js',
+    'panel.js'
+)
 
 BROWSER_CHROME_MANIFESTS += ['test/mochitest/browser.ini']
--- a/devtools/client/debugger/panel.js
+++ b/devtools/client/debugger/panel.js
@@ -2,18 +2,18 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const { Cc, Ci, Cu, Cr } = require("chrome");
 const promise = require("promise");
-const EventEmitter = require("devtools/toolkit/event-emitter");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const EventEmitter = require("devtools/shared/event-emitter");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 function DebuggerPanel(iframeWindow, toolbox) {
   this.panelWin = iframeWindow;
   this._toolbox = toolbox;
   this._destroyer = null;
 
   this._view = this.panelWin.DebuggerView;
   this._controller = this.panelWin.DebuggerController;
--- a/devtools/client/debugger/test/mochitest/browser_dbg_chrome-debugging.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_chrome-debugging.js
@@ -7,17 +7,17 @@
 
 const TAB_URL = EXAMPLE_URL + "doc_inline-debugger-statement.html";
 
 var gClient, gThreadClient;
 var gAttached = promise.defer();
 var gNewGlobal = promise.defer()
 var gNewChromeSource = promise.defer()
 
-var { DevToolsLoader } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+var { DevToolsLoader } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 var loader = new DevToolsLoader();
 loader.invisibleToDebugger = true;
 loader.main("devtools/server/main");
 var DebuggerServer = loader.DebuggerServer;
 
 function test() {
   if (!DebuggerServer.initialized) {
     DebuggerServer.init();
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-01.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-01.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check that simple JS can be parsed and cached with the reflection API.
  */
 
 function test() {
-  let { Parser } = Cu.import("resource:///modules/devtools/Parser.jsm", {});
+  let { Parser } = Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   let source = "let x = 42;";
   let parser = new Parser();
   let first = parser.get(source);
   let second = parser.get(source);
 
   isnot(first, second,
     "The two syntax trees should be different.");
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-02.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-02.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check that syntax errors are reported correctly.
  */
 
 function test() {
-  let { Parser } = Cu.import("resource:///modules/devtools/Parser.jsm", {});
+  let { Parser } = Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   let source = "let x + 42;";
   let parser = new Parser();
   // Don't pollute the logs with exceptions that we are going to check anyhow.
   parser.logExceptions = false;
   let parsed = parser.get(source);
 
   ok(parsed,
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-03.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-03.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check that JS inside HTML can be separated and parsed correctly.
  */
 
 function test() {
-  let { Parser } = Cu.import("resource:///modules/devtools/Parser.jsm", {});
+  let { Parser } = Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   let source = [
     "<!doctype html>",
     "<head>",
       "<script>",
         "let a = 42;",
       "</script>",
       "<script type='text/javascript'>",
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-04.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-04.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check that faulty JS inside HTML can be separated and identified correctly.
  */
 
 function test() {
-  let { Parser } = Cu.import("resource:///modules/devtools/Parser.jsm", {});
+  let { Parser } = Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   let source = [
     "<!doctype html>",
     "<head>",
       "<SCRIPT>",
         "let a + 42;",
       "</SCRIPT>",
       "<script type='text/javascript'>",
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-05.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-05.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check that JS code containing strings that might look like <script> tags
  * inside an HTML source is parsed correctly.
  */
 
 function test() {
-  let { Parser } = Cu.import("resource:///modules/devtools/Parser.jsm", {});
+  let { Parser } = Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   let source = [
     "let a = [];",
     "a.push('<script>');",
     "a.push('var a = 42;');",
     "a.push('</script>');",
     "a.push('<script type=\"text/javascript\">');",
     "a.push('var b = 42;');",
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-06.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-06.js
@@ -3,17 +3,17 @@
 
 /**
  * Check that some potentially problematic identifier nodes have the
  * right location information attached.
  */
 
 function test() {
   let { Parser, ParserHelpers, SyntaxTreeVisitor } =
-    Cu.import("resource:///modules/devtools/Parser.jsm", {});
+    Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   function verify(source, predicate, [sline, scol], [eline, ecol]) {
     let ast = Parser.reflectionAPI.parse(source);
     let node = SyntaxTreeVisitor.filter(ast, predicate).pop();
     let loc = ParserHelpers.getNodeLocation(node);
 
     is(loc.start.toSource(), { line: sline, column: scol }.toSource(),
       "The start location was correct for the identifier in: '" + source + "'.");
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-07.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-07.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check that nodes with locaiton information attached can be properly
  * verified for containing lines and columns.
  */
 
 function test() {
-  let { ParserHelpers } = Cu.import("resource:///modules/devtools/Parser.jsm", {});
+  let { ParserHelpers } = Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   let node1 = { loc: {
     start: { line: 1, column: 10 },
     end: { line: 10, column: 1 }
   }};
   let node2 = { loc: {
     start: { line: 1, column: 10 },
     end: { line: 1, column: 20 }
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-08.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-08.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test that inferring anonymous function information is done correctly.
  */
 
 function test() {
   let { Parser, ParserHelpers, SyntaxTreeVisitor } =
-    Cu.import("resource:///modules/devtools/Parser.jsm", {});
+    Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   function verify(source, predicate, details) {
     let { name, chain } = details;
     let [[sline, scol], [eline, ecol]] = details.loc;
     let ast = Parser.reflectionAPI.parse(source);
     let node = SyntaxTreeVisitor.filter(ast, predicate).pop();
     let info = ParserHelpers.inferFunctionExpressionInfo(node);
 
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-09.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-09.js
@@ -3,17 +3,17 @@
 
 /**
  * Test that inferring anonymous function information is done correctly
  * from arrow expressions.
  */
 
 function test() {
   let { Parser, ParserHelpers, SyntaxTreeVisitor } =
-    Cu.import("resource:///modules/devtools/Parser.jsm", {});
+    Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   function verify(source, predicate, details) {
     let { name, chain } = details;
     let [[sline, scol], [eline, ecol]] = details.loc;
     let ast = Parser.reflectionAPI.parse(source);
     let node = SyntaxTreeVisitor.filter(ast, predicate).pop();
     let info = ParserHelpers.inferFunctionExpressionInfo(node);
 
--- a/devtools/client/debugger/test/mochitest/browser_dbg_parser-10.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_parser-10.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test that creating an evaluation string for certain nodes works properly.
  */
 
 function test() {
   let { Parser, ParserHelpers, SyntaxTreeVisitor } =
-    Cu.import("resource:///modules/devtools/Parser.jsm", {});
+    Cu.import("resource:///modules/devtools/client/shared/Parser.jsm", {});
 
   function verify(source, predicate, string) {
     let ast = Parser.reflectionAPI.parse(source);
     let node = SyntaxTreeVisitor.filter(ast, predicate).pop();
     let info = ParserHelpers.getIdentifierEvalString(node);
     is(info, string, "The identifier evaluation string is correct.");
   }
 
--- a/devtools/client/debugger/test/mochitest/code_ugly-4.js
+++ b/devtools/client/debugger/test/mochitest/code_ugly-4.js
@@ -1,15 +1,15 @@
 function a(){b()}function b(){debugger}
 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJjLmpzIiwic291cmNlcyI6WyJkYXRhOnRleHQvamF2YXNjcmlwdCxmdW5jdGlvbiBhKCl7YigpfSIsImRhdGE6dGV4dC9qYXZhc2NyaXB0LGZ1bmN0aW9uIGIoKXtkZWJ1Z2dlcn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJDQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMifQ==
 
 // Generate this file by evaluating the following in a browser-environment
 // scratchpad:
 //
-//    let { require } = Components.utils.import('resource://gre/modules/devtools/Loader.jsm', {});
+//    let { require } = Components.utils.import('resource://gre/modules/devtools/shared/Loader.jsm', {});
 //    let { SourceNode } = require("source-map");
 //
 //    let dataUrl = s => "data:text/javascript," + s;
 //
 //    let A = "function a(){b()}";
 //    let A_URL = dataUrl(A);
 //    let B = "function b(){debugger}";
 //    let B_URL = dataUrl(B);
--- a/devtools/client/debugger/test/mochitest/head.js
+++ b/devtools/client/debugger/test/mochitest/head.js
@@ -8,28 +8,28 @@ var { Services } = Cu.import("resource:/
 
 // Disable logging for faster test runs. Set this pref to true if you want to
 // debug a test in your try runs. Both the debugger server and frontend will
 // be affected by this pref.
 var gEnableLogging = Services.prefs.getBoolPref("devtools.debugger.log");
 Services.prefs.setBoolPref("devtools.debugger.log", false);
 
 var { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
-var { Promise: promise } = Cu.import("resource://gre/modules/devtools/deprecated-sync-thenables.js", {});
-var { gDevTools } = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-var { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-var DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
-var { BrowserToolboxProcess } = Cu.import("resource:///modules/devtools/ToolboxProcess.jsm", {});
+var { Promise: promise } = Cu.import("resource://gre/modules/devtools/shared/deprecated-sync-thenables.js", {});
+var { gDevTools } = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+var { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+var DevToolsUtils = require("devtools/shared/DevToolsUtils");
+var { BrowserToolboxProcess } = Cu.import("resource:///modules/devtools/client/framework/ToolboxProcess.jsm", {});
 var { DebuggerServer } = require("devtools/server/main");
-var { DebuggerClient, ObjectClient } = require("devtools/toolkit/client/main");
+var { DebuggerClient, ObjectClient } = require("devtools/shared/client/main");
 var { AddonManager } = Cu.import("resource://gre/modules/AddonManager.jsm", {});
-var EventEmitter = require("devtools/toolkit/event-emitter");
-const { promiseInvoke } = require("devtools/async-utils");
-var { TargetFactory } = require("devtools/framework/target");
-var { Toolbox } = require("devtools/framework/toolbox")
+var EventEmitter = require("devtools/shared/event-emitter");
+const { promiseInvoke } = require("devtools/shared/async-utils");
+var { TargetFactory } = require("devtools/client/framework/target");
+var { Toolbox } = require("devtools/client/framework/toolbox")
 
 const EXAMPLE_URL = "http://example.com/browser/browser/devtools/debugger/test/mochitest/";
 const FRAME_SCRIPT_URL = getRootDirectory(gTestPath) + "code_frame-script.js";
 
 DevToolsUtils.testing = true;
 SimpleTest.registerCleanupFunction(() => {
   DevToolsUtils.testing = false;
 });
--- a/devtools/client/definitions.js
+++ b/devtools/client/definitions.js
@@ -6,29 +6,29 @@
 
 const {Cc, Ci, Cu} = require("chrome");
 
 const { Services } = require("resource://gre/modules/Services.jsm");
 
 loader.lazyGetter(this, "osString", () => Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS);
 
 // Panels
-loader.lazyGetter(this, "OptionsPanel", () => require("devtools/framework/toolbox-options").OptionsPanel);
-loader.lazyGetter(this, "InspectorPanel", () => require("devtools/inspector/inspector-panel").InspectorPanel);
-loader.lazyGetter(this, "WebConsolePanel", () => require("devtools/webconsole/panel").WebConsolePanel);
-loader.lazyGetter(this, "DebuggerPanel", () => require("devtools/debugger/panel").DebuggerPanel);
-loader.lazyGetter(this, "StyleEditorPanel", () => require("devtools/styleeditor/styleeditor-panel").StyleEditorPanel);
-loader.lazyGetter(this, "ShaderEditorPanel", () => require("devtools/shadereditor/panel").ShaderEditorPanel);
-loader.lazyGetter(this, "CanvasDebuggerPanel", () => require("devtools/canvasdebugger/panel").CanvasDebuggerPanel);
-loader.lazyGetter(this, "WebAudioEditorPanel", () => require("devtools/webaudioeditor/panel").WebAudioEditorPanel);
-loader.lazyGetter(this, "MemoryPanel", () => require("devtools/memory/panel").MemoryPanel);
-loader.lazyGetter(this, "PerformancePanel", () => require("devtools/performance/panel").PerformancePanel);
-loader.lazyGetter(this, "NetMonitorPanel", () => require("devtools/netmonitor/panel").NetMonitorPanel);
-loader.lazyGetter(this, "StoragePanel", () => require("devtools/storage/panel").StoragePanel);
-loader.lazyGetter(this, "ScratchpadPanel", () => require("devtools/scratchpad/scratchpad-panel").ScratchpadPanel);
+loader.lazyGetter(this, "OptionsPanel", () => require("devtools/client/framework/toolbox-options").OptionsPanel);
+loader.lazyGetter(this, "InspectorPanel", () => require("devtools/client/inspector/inspector-panel").InspectorPanel);
+loader.lazyGetter(this, "WebConsolePanel", () => require("devtools/client/webconsole/panel").WebConsolePanel);
+loader.lazyGetter(this, "DebuggerPanel", () => require("devtools/client/debugger/panel").DebuggerPanel);
+loader.lazyGetter(this, "StyleEditorPanel", () => require("devtools/client/styleeditor/styleeditor-panel").StyleEditorPanel);
+loader.lazyGetter(this, "ShaderEditorPanel", () => require("devtools/client/shadereditor/panel").ShaderEditorPanel);
+loader.lazyGetter(this, "CanvasDebuggerPanel", () => require("devtools/client/canvasdebugger/panel").CanvasDebuggerPanel);
+loader.lazyGetter(this, "WebAudioEditorPanel", () => require("devtools/client/webaudioeditor/panel").WebAudioEditorPanel);
+loader.lazyGetter(this, "MemoryPanel", () => require("devtools/client/memory/panel").MemoryPanel);
+loader.lazyGetter(this, "PerformancePanel", () => require("devtools/client/performance/panel").PerformancePanel);
+loader.lazyGetter(this, "NetMonitorPanel", () => require("devtools/client/netmonitor/panel").NetMonitorPanel);
+loader.lazyGetter(this, "StoragePanel", () => require("devtools/client/storage/panel").StoragePanel);
+loader.lazyGetter(this, "ScratchpadPanel", () => require("devtools/client/scratchpad/scratchpad-panel").ScratchpadPanel);
 
 // Strings
 const toolboxProps = "chrome://browser/locale/devtools/toolbox.properties";
 const inspectorProps = "chrome://browser/locale/devtools/inspector.properties";
 const webConsoleProps = "chrome://browser/locale/devtools/webconsole.properties";
 const debuggerProps = "chrome://browser/locale/devtools/debugger.properties";
 const styleEditorProps = "chrome://browser/locale/devtools/styleeditor.properties";
 const shaderEditorProps = "chrome://browser/locale/devtools/shadereditor.properties";
@@ -90,19 +90,19 @@ Tools.inspector = {
   label: l10n("inspector.label", inspectorStrings),
   panelLabel: l10n("inspector.panelLabel", inspectorStrings),
   get tooltip() {
     return l10n("inspector.tooltip2", inspectorStrings,
     ( osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+" ) + this.key);
   },
   inMenu: true,
   commands: [
-    "devtools/responsivedesign/resize-commands",
-    "devtools/inspector/inspector-commands",
-    "devtools/eyedropper/commands.js"
+    "devtools/client/responsivedesign/resize-commands",
+    "devtools/client/inspector/inspector-commands",
+    "devtools/client/eyedropper/commands.js"
   ],
 
   preventClosingOnKey: true,
   onkey: function(panel) {
     panel.toolbox.highlighterUtils.togglePicker();
   },
 
   isTargetSupported: function(target) {
@@ -126,17 +126,17 @@ Tools.webConsole = {
   label: l10n("ToolboxTabWebconsole.label", webConsoleStrings),
   menuLabel: l10n("MenuWebconsole.label", webConsoleStrings),
   panelLabel: l10n("ToolboxWebConsole.panelLabel", webConsoleStrings),
   get tooltip() {
     return l10n("ToolboxWebconsole.tooltip2", webConsoleStrings,
     ( osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+" ) + this.key);
   },
   inMenu: true,
-  commands: "devtools/webconsole/console-commands",
+  commands: "devtools/client/webconsole/console-commands",
 
   preventClosingOnKey: true,
   onkey: function(panel, toolbox) {
     if (toolbox.splitConsole)
       return toolbox.focusConsoleInput();
 
     panel.focusInput();
   },
@@ -162,17 +162,17 @@ Tools.jsdebugger = {
   url: "chrome://devtools/content/debugger/debugger.xul",
   label: l10n("ToolboxDebugger.label", debuggerStrings),
   panelLabel: l10n("ToolboxDebugger.panelLabel", debuggerStrings),
   get tooltip() {
     return l10n("ToolboxDebugger.tooltip2", debuggerStrings,
     ( osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+" ) + this.key);
   },
   inMenu: true,
-  commands: "devtools/debugger/debugger-commands",
+  commands: "devtools/client/debugger/debugger-commands",
 
   isTargetSupported: function(target) {
     return true;
   },
 
   build: function(iframeWindow, toolbox) {
     return new DebuggerPanel(iframeWindow, toolbox);
   }
@@ -189,17 +189,17 @@ Tools.styleEditor = {
   url: "chrome://devtools/content/styleeditor/styleeditor.xul",
   label: l10n("ToolboxStyleEditor.label", styleEditorStrings),
   panelLabel: l10n("ToolboxStyleEditor.panelLabel", styleEditorStrings),
   get tooltip() {
     return l10n("ToolboxStyleEditor.tooltip3", styleEditorStrings,
     "Shift+" + functionkey(this.key));
   },
   inMenu: true,
-  commands: "devtools/styleeditor/styleeditor-commands",
+  commands: "devtools/client/styleeditor/styleeditor-commands",
 
   isTargetSupported: function(target) {
     return target.hasActor("styleEditor") || target.hasActor("styleSheets");
   },
 
   build: function(iframeWindow, toolbox) {
     return new StyleEditorPanel(iframeWindow, toolbox);
   }
@@ -383,17 +383,17 @@ Tools.scratchpad = {
   visibilityswitch: "devtools.scratchpad.enabled",
   icon: "chrome://browser/skin/devtools/tool-scratchpad.svg",
   invertIconForLightTheme: true,
   url: "chrome://devtools/content/scratchpad/scratchpad.xul",
   label: l10n("scratchpad.label", scratchpadStrings),
   panelLabel: l10n("scratchpad.panelLabel", scratchpadStrings),
   tooltip: l10n("scratchpad.tooltip", scratchpadStrings),
   inMenu: false,
-  commands: "devtools/scratchpad/scratchpad-commands",
+  commands: "devtools/client/scratchpad/scratchpad-commands",
 
   isTargetSupported: function(target) {
     return target.isRemote;
   },
 
   build: function(iframeWindow, toolbox) {
     return new ScratchpadPanel(iframeWindow, toolbox);
   }
--- a/devtools/client/devtools-clhandler.js
+++ b/devtools/client/devtools-clhandler.js
@@ -34,21 +34,21 @@ devtoolsCommandlineHandler.prototype = {
     if (debuggerServerFlag) {
       this.handleDebuggerServerFlag(cmdLine, debuggerServerFlag);
     }
   },
 
   handleConsoleFlag: function(cmdLine) {
     let window = Services.wm.getMostRecentWindow("devtools:webconsole");
     if (!window) {
-      let { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+      let { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
       // Load the browser devtools main module as the loader's main module.
-      Cu.import("resource:///modules/devtools/gDevTools.jsm");
-      let hudservice = require("devtools/webconsole/hudservice");
-      let { console } = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
+      Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
+      let hudservice = require("devtools/client/webconsole/hudservice");
+      let { console } = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
       hudservice.toggleBrowserConsole().then(null, console.error);
     } else {
       window.focus(); // the Browser Console was already open
     }
 
     if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
       cmdLine.preventDefault = true;
     }
@@ -72,34 +72,34 @@ devtoolsCommandlineHandler.prototype = {
     }
     return remoteDebuggingEnabled;
   },
 
   handleDebuggerFlag: function(cmdLine) {
     if (!this._isRemoteDebuggingEnabled()) {
       return;
     }
-    Cu.import("resource:///modules/devtools/ToolboxProcess.jsm");
+    Cu.import("resource:///modules/devtools/client/framework/ToolboxProcess.jsm");
     BrowserToolboxProcess.init();
 
     if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
       cmdLine.preventDefault = true;
     }
   },
 
   handleDebuggerServerFlag: function(cmdLine, portOrPath) {
     if (!this._isRemoteDebuggingEnabled()) {
       return;
     }
     if (portOrPath === true) {
       // Default to TCP port 6000 if no value given
       portOrPath = 6000;
     }
     let { DevToolsLoader } =
-      Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+      Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
     try {
       // Create a separate loader instance, so that we can be sure to receive
       // a separate instance of the DebuggingServer from the rest of the
       // devtools.  This allows us to safely use the tools against even the
       // actors and DebuggingServer itself, especially since we can mark
       // serverLoader as invisible to the debugger (unlike the usual loader
       // settings).
--- a/devtools/client/eyedropper/commands.js
+++ b/devtools/client/eyedropper/commands.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const l10n = require("gcli/l10n");
-const EventEmitter = require("devtools/toolkit/event-emitter");
+const EventEmitter = require("devtools/shared/event-emitter");
 const eventEmitter = new EventEmitter();
 
-var { Eyedropper, EyedropperManager } = require("devtools/eyedropper/eyedropper");
+var { Eyedropper, EyedropperManager } = require("devtools/client/eyedropper/eyedropper");
 
 /**
  * 'eyedropper' command
  */
 exports.items = [{
   item: "command",
   runAt: "client",
   name: "eyedropper",
--- a/devtools/client/eyedropper/eyedropper.js
+++ b/devtools/client/eyedropper/eyedropper.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {Cc, Ci, Cu} = require("chrome");
-const {rgbToHsl} = require("devtools/css-color").colorUtils;
-const Telemetry = require("devtools/shared/telemetry");
-const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js");
+const {rgbToHsl} = require("devtools/shared/css-color").colorUtils;
+const Telemetry = require("devtools/client/shared/telemetry");
+const {EventEmitter} = Cu.import("resource://gre/modules/devtools/shared/event-emitter.js");
 const promise = require("promise");
 const {setTimeout, clearTimeout} = Cu.import("resource://gre/modules/Timer.jsm", {});
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 loader.lazyGetter(this, "clipboardHelper", function() {
   return Cc["@mozilla.org/widget/clipboardhelper;1"]
     .getService(Ci.nsIClipboardHelper);
@@ -128,17 +128,17 @@ function Eyedropper(chromeWindow, opts =
   this._zoomArea = {
     x: 0,          // the left coordinate of the center of the inspected region
     y: 0,          // the top coordinate of the center of the inspected region
     width: CANVAS_WIDTH,      // width of canvas to draw zoomed area onto
     height: CANVAS_WIDTH      // height of canvas
   };
 
   let mm = this._contentTab.linkedBrowser.messageManager;
-  mm.loadFrameScript("resource:///modules/devtools/eyedropper/eyedropper-child.js", true);
+  mm.loadFrameScript("resource:///modules/devtools/client/eyedropper/eyedropper-child.js", true);
 
   // record if this was opened via the picker or standalone
   var telemetry = new Telemetry();
   if (opts.context == "command") {
     telemetry.toolOpened("eyedropper");
   }
   else if (opts.context == "menu") {
     telemetry.toolOpened("menueyedropper");
--- a/devtools/client/eyedropper/moz.build
+++ b/devtools/client/eyedropper/moz.build
@@ -1,13 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-EXTRA_JS_MODULES.devtools.eyedropper += [
+DevToolsModules(
     'commands.js',
     'eyedropper-child.js',
     'eyedropper.js'
-]
+)
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
--- a/devtools/client/eyedropper/test/head.js
+++ b/devtools/client/eyedropper/test/head.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // shared-head.js handles imports, constants, and utility functions
 Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/browser/devtools/framework/test/shared-head.js", this);
 Services.scriptloader.loadSubScript(TEST_DIR + "../../../commandline/test/helpers.js", this);
 
-const { Eyedropper, EyedropperManager } = require("devtools/eyedropper/eyedropper");
+const { Eyedropper, EyedropperManager } = require("devtools/client/eyedropper/eyedropper");
 
 function waitForClipboard(setup, expected) {
   let deferred = promise.defer();
   SimpleTest.waitForClipboard(expected, setup, deferred.resolve, deferred.reject);
   return deferred.promise;
 }
 
 function dropperStarted(dropper) {
--- a/devtools/client/fontinspector/font-inspector.js
+++ b/devtools/client/fontinspector/font-inspector.js
@@ -9,17 +9,17 @@
 const { utils: Cu } = Components;
 const DEFAULT_PREVIEW_TEXT = "Abc";
 const PREVIEW_UPDATE_DELAY = 150;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Task",
   "resource://gre/modules/Task.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-  "resource://gre/modules/devtools/Console.jsm");
+  "resource://gre/modules/devtools/shared/Console.jsm");
 
 function FontInspector(inspector, window)
 {
   this.inspector = inspector;
   this.pageStyle = this.inspector.pageStyle;
   this.chromeDoc = window.document;
   this.init();
 }
--- a/devtools/client/fontinspector/test/browser_fontinspector_theme-change.js
+++ b/devtools/client/fontinspector/test/browser_fontinspector_theme-change.js
@@ -1,16 +1,16 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 // Test that the preview images are updated when the theme changes.
 
-const { getTheme, setTheme } = require("devtools/shared/theme");
+const { getTheme, setTheme } = require("devtools/client/shared/theme");
 
 const TEST_URI = BASE_URI + "browser_fontinspector.html";
 const originalTheme = getTheme();
 
 registerCleanupFunction(() => {
   info(`Restoring theme to '${originalTheme}.`);
   setTheme(originalTheme);
 });
--- a/devtools/client/framework/ToolboxProcess.jsm
+++ b/devtools/client/framework/ToolboxProcess.jsm
@@ -7,23 +7,23 @@
 
 const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
 
 const DBG_XUL = "chrome://devtools/content/framework/toolbox-process-window.xul";
 const CHROME_DEBUGGER_PROFILE_NAME = "chrome_debugger_profile";
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm")
-const { require, DevToolsLoader } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { require, DevToolsLoader } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 
 XPCOMUtils.defineLazyGetter(this, "Telemetry", function () {
-  return require("devtools/shared/telemetry");
+  return require("devtools/client/shared/telemetry");
 });
 XPCOMUtils.defineLazyGetter(this, "EventEmitter", function () {
-  return require("devtools/toolkit/event-emitter");
+  return require("devtools/shared/event-emitter");
 });
 const promise = require("promise");
 
 this.EXPORTED_SYMBOLS = ["BrowserToolboxProcess"];
 
 var processes = new Set();
 
 /**
--- a/devtools/client/framework/connect/connect.js
+++ b/devtools/client/framework/connect/connect.js
@@ -5,22 +5,22 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const Cu = Components.utils;
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/Task.jsm");
-var {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-var {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-var {TargetFactory} = require("devtools/framework/target");
-var {Toolbox} = require("devtools/framework/toolbox")
+var {gDevTools} = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+var {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+var {TargetFactory} = require("devtools/client/framework/target");
+var {Toolbox} = require("devtools/client/framework/toolbox")
 var promise = require("promise");
-var {DebuggerClient} = require("devtools/toolkit/client/main");
+var {DebuggerClient} = require("devtools/shared/client/main");
 
 var gClient;
 var gConnectionTimeout;
 
 XPCOMUtils.defineLazyGetter(window, 'l10n', function () {
   return Services.strings.createBundle('chrome://browser/locale/devtools/connection-screen.properties');
 });
 
--- a/devtools/client/framework/gDevTools.jsm
+++ b/devtools/client/framework/gDevTools.jsm
@@ -5,32 +5,32 @@
 "use strict";
 
 this.EXPORTED_SYMBOLS = [ "gDevTools", "DevTools", "gDevToolsBrowser" ];
 
 const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
-const { require, loader } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
+const { require, loader } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
 const promise = require("promise");
 // Load target and toolbox lazily as they need gDevTools to be fully initialized
-loader.lazyRequireGetter(this, "TargetFactory", "devtools/framework/target", true);
-loader.lazyRequireGetter(this, "Toolbox", "devtools/framework/toolbox", true);
+loader.lazyRequireGetter(this, "TargetFactory", "devtools/client/framework/target", true);
+loader.lazyRequireGetter(this, "Toolbox", "devtools/client/framework/toolbox", true);
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
-                                  "resource://gre/modules/devtools/Console.jsm");
+                                  "resource://gre/modules/devtools/shared/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "CustomizableUI",
                                   "resource:///modules/CustomizableUI.jsm");
 loader.lazyRequireGetter(this, "DebuggerServer", "devtools/server/main", true);
-loader.lazyRequireGetter(this, "DebuggerClient", "devtools/toolkit/client/main", true);
+loader.lazyRequireGetter(this, "DebuggerClient", "devtools/shared/client/main", true);
 
-const DefaultTools = require("definitions").defaultTools;
-const EventEmitter = require("devtools/toolkit/event-emitter");
-const Telemetry = require("devtools/shared/telemetry");
+const DefaultTools = require("devtools/client/definitions").defaultTools;
+const EventEmitter = require("devtools/shared/event-emitter");
+const Telemetry = require("devtools/client/shared/telemetry");
 
 const TABS_OPEN_PEAK_HISTOGRAM = "DEVTOOLS_TABS_OPEN_PEAK_LINEAR";
 const TABS_OPEN_AVG_HISTOGRAM = "DEVTOOLS_TABS_OPEN_AVERAGE_LINEAR";
 const TABS_PINNED_PEAK_HISTOGRAM = "DEVTOOLS_TABS_PINNED_PEAK_LINEAR";
 const TABS_PINNED_AVG_HISTOGRAM = "DEVTOOLS_TABS_PINNED_AVERAGE_LINEAR";
 
 const FORBIDDEN_IDS = new Set(["toolbox", ""]);
 const MAX_ORDINAL = 99;
@@ -1322,9 +1322,9 @@ gDevTools.on("tool-unregistered", functi
 });
 
 gDevTools.on("toolbox-ready", gDevToolsBrowser._updateMenuCheckbox);
 gDevTools.on("toolbox-destroyed", gDevToolsBrowser._updateMenuCheckbox);
 
 Services.obs.addObserver(gDevToolsBrowser.destroy, "quit-application", false);
 
 // Load the browser devtools main module as the loader's main module.
-loader.main("main");
+loader.main("devtools/client/main");
--- a/devtools/client/framework/moz.build
+++ b/devtools/client/framework/moz.build
@@ -1,22 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
 
-EXTRA_JS_MODULES.devtools += [
+DevToolsModules(
     'gDevTools.jsm',
-    'ToolboxProcess.jsm',
-]
-
-EXTRA_JS_MODULES.devtools.framework += [
     'selection.js',
     'sidebar.js',
     'target.js',
     'toolbox-highlighter-utils.js',
     'toolbox-hosts.js',
     'toolbox-options.js',
     'toolbox.js',
-]
+    'ToolboxProcess.jsm',
+)
--- a/devtools/client/framework/selection.js
+++ b/devtools/client/framework/selection.js
@@ -2,18 +2,18 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { Cu, Ci } = require("chrome");
-const { getRootBindingParent } = require("devtools/toolkit/layout/utils");
-var EventEmitter = require("devtools/toolkit/event-emitter");
+const { getRootBindingParent } = require("devtools/shared/layout/utils");
+var EventEmitter = require("devtools/shared/event-emitter");
 
 /**
  * API
  *
  *   new Selection(walker=null, node=null, track={attributes,detached});
  *   destroy()
  *   node (readonly)
  *   setNode(node, origin="unknown")
--- a/devtools/client/framework/sidebar.js
+++ b/devtools/client/framework/sidebar.js
@@ -5,18 +5,18 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {Cu} = require("chrome");
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/Task.jsm");
 
-var EventEmitter = require("devtools/toolkit/event-emitter");
-var Telemetry = require("devtools/shared/telemetry");
+var EventEmitter = require("devtools/shared/event-emitter");
+var Telemetry = require("devtools/client/shared/telemetry");
 
 const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 
 /**
  * ToolSidebar provides methods to register tabs in the sidebar.
  * It's assumed that the sidebar contains a xul:tabbox.
  * Typically, you'll want the tabbox parameter to be a XUL tabbox like this:
  *
--- a/devtools/client/framework/target.js
+++ b/devtools/client/framework/target.js
@@ -1,21 +1,21 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {Cc, Ci, Cu} = require("chrome");
 const promise = require("promise");
-const EventEmitter = require("devtools/toolkit/event-emitter");
+const EventEmitter = require("devtools/shared/event-emitter");
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 loader.lazyRequireGetter(this, "DebuggerServer", "devtools/server/main", true);
-loader.lazyRequireGetter(this, "DebuggerClient", "devtools/toolkit/client/main", true);
+loader.lazyRequireGetter(this, "DebuggerClient", "devtools/shared/client/main", true);
 
 const targets = new WeakMap();
 const promiseTargets = new WeakMap();
 
 /**
  * Functions for creating Targets
  */
 exports.TargetFactory = {
--- a/devtools/client/framework/test/browser_devtools_api.js
+++ b/devtools/client/framework/test/browser_devtools_api.js
@@ -12,17 +12,17 @@ thisTestLeaksUncaughtRejectionsAndShould
 thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.doc is undefined");
 
 // Tests devtools API
 
 const toolId1 = "test-tool-1";
 const toolId2 = "test-tool-2";
 
 var tempScope = {};
-Cu.import("resource://gre/modules/devtools/event-emitter.js", tempScope);
+Cu.import("resource://gre/modules/devtools/shared/event-emitter.js", tempScope);
 var EventEmitter = tempScope.EventEmitter;
 
 function test() {
   addTab("about:blank").then(runTests1);
 }
 
 // Test scenario 1: the tool definition build method returns a promise.
 function runTests1(aTab) {
--- a/devtools/client/framework/test/browser_keybindings_02.js
+++ b/devtools/client/framework/test/browser_keybindings_02.js
@@ -2,17 +2,17 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Test that the toolbox keybindings still work after the host is changed.
 
 const URL = "data:text/html;charset=utf8,test page";
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 add_task(function*() {
   info("Create a test tab and open the toolbox");
   let tab = yield addTab(URL);
   let target = TargetFactory.forTab(tab);
   let toolbox = yield gDevTools.showToolbox(target, "webconsole");
 
   let {SIDE, BOTTOM} = Toolbox.HostType;
--- a/devtools/client/framework/test/browser_keybindings_03.js
+++ b/devtools/client/framework/test/browser_keybindings_03.js
@@ -3,17 +3,17 @@
 
 "use strict";
 
 // Test that the toolbox 'switch to previous host' feature works.
 // Pressing ctrl/cmd+shift+d should switch to the last used host.
 
 const URL = "data:text/html;charset=utf8,test page for toolbox switching";
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 add_task(function*() {
   info("Create a test tab and open the toolbox");
   let tab = yield addTab(URL);
   let target = TargetFactory.forTab(tab);
   let toolbox = yield gDevTools.showToolbox(target, "webconsole");
 
   let keyElement = toolbox.doc.getElementById("toolbox-toggle-host-key");
--- a/devtools/client/framework/test/browser_toolbox_custom_host.js
+++ b/devtools/client/framework/test/browser_toolbox_custom_host.js
@@ -1,14 +1,14 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 function test() {
-  let {Toolbox} = require("devtools/framework/toolbox");
+  let {Toolbox} = require("devtools/client/framework/toolbox");
 
   let toolbox, iframe, target, tab;
 
   gBrowser.selectedTab = gBrowser.addTab();
   target = TargetFactory.forTab(gBrowser.selectedTab);
 
   window.addEventListener("message", onMessage);
 
--- a/devtools/client/framework/test/browser_toolbox_highlight.js
+++ b/devtools/client/framework/test/browser_toolbox_highlight.js
@@ -1,12 +1,12 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 var toolbox = null;
 
 function test() {
   const URL = "data:text/plain;charset=UTF-8,Nothing to see here, move along";
 
   const TOOL_ID_1 = "jsdebugger";
   const TOOL_ID_2 = "webconsole";
--- a/devtools/client/framework/test/browser_toolbox_hosts.js
+++ b/devtools/client/framework/test/browser_toolbox_hosts.js
@@ -1,15 +1,15 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 var {SIDE, BOTTOM, WINDOW} = Toolbox.HostType;
 var toolbox, target;
 
 const URL = "data:text/html;charset=utf8,test for opening toolbox in different hosts";
 
 add_task(function* runTest() {
   info("Create a test tab and open the toolbox");
   let tab = yield addTab(URL);
--- a/devtools/client/framework/test/browser_toolbox_hosts_size.js
+++ b/devtools/client/framework/test/browser_toolbox_hosts_size.js
@@ -5,17 +5,17 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that getPanelWhenReady returns the correct panel in promise
 // resolutions regardless of whether it has opened first.
 
 const URL = "data:text/html;charset=utf8,test for host sizes";
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 add_task(function*() {
   // Set size prefs to make the hosts way too big, so that the size has
   // to be clamped to fit into the browser window.
   Services.prefs.setIntPref("devtools.toolbox.footer.height", 10000);
   Services.prefs.setIntPref("devtools.toolbox.sidebar.width", 10000);
 
   let tab = yield addTab(URL);
--- a/devtools/client/framework/test/browser_toolbox_minimize.js
+++ b/devtools/client/framework/test/browser_toolbox_minimize.js
@@ -5,17 +5,17 @@
 
 // Test that when the toolbox is displayed in a bottom host, that host can be
 // minimized to just the tabbar height, and maximized again.
 // Also test that while minimized, switching to a tool, clicking on the
 // settings, or clicking on the selected tool's tab maximizes the toolbox again.
 // Finally test that the minimize button doesn't exist in other host types.
 
 const URL = "data:text/html;charset=utf8,test page";
-const {Toolbox} = require("devtools/framework/toolbox");
+const {Toolbox} = require("devtools/client/framework/toolbox");
 
 add_task(function*() {
   info("Create a test tab and open the toolbox");
   let tab = yield addTab(URL);
   let target = TargetFactory.forTab(tab);
   let toolbox = yield gDevTools.showToolbox(target, "webconsole");
 
   let button = toolbox.doc.querySelector("#toolbox-dock-bottom-minimize");
--- a/devtools/client/framework/test/browser_toolbox_raise.js
+++ b/devtools/client/framework/test/browser_toolbox_raise.js
@@ -1,13 +1,13 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 var toolbox, target, tab1, tab2;
 
 function test() {
   gBrowser.selectedTab = tab1 = gBrowser.addTab();
   tab2 = gBrowser.addTab();
   target = TargetFactory.forTab(gBrowser.selectedTab);
 
--- a/devtools/client/framework/test/browser_toolbox_sidebar.js
+++ b/devtools/client/framework/test/browser_toolbox_sidebar.js
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 function test() {
   const Cu = Components.utils;
-  let {ToolSidebar} = require("devtools/framework/sidebar");
+  let {ToolSidebar} = require("devtools/client/framework/sidebar");
 
   const toolURL = "data:text/xml;charset=utf8,<?xml version='1.0'?>" +
                   "<?xml-stylesheet href='chrome://browser/skin/devtools/common.css' type='text/css'?>" +
                   "<window xmlns='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'>" +
                   "<hbox flex='1'><description flex='1'>foo</description><splitter class='devtools-side-splitter'/>" +
                   "<tabbox flex='1' id='sidebar' class='devtools-sidebar-tabs'><tabs/><tabpanels flex='1'/></tabbox>" +
                   "</hbox>" +
                   "</window>";
--- a/devtools/client/framework/test/browser_toolbox_sidebar_events.js
+++ b/devtools/client/framework/test/browser_toolbox_sidebar_events.js
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 function test() {
   const Cu = Components.utils;
-  const { ToolSidebar } = require("devtools/framework/sidebar");
+  const { ToolSidebar } = require("devtools/client/framework/sidebar");
 
   const toolURL = "data:text/xml;charset=utf8,<?xml version='1.0'?>" +
                   "<?xml-stylesheet href='chrome://browser/skin/devtools/common.css' type='text/css'?>" +
                   "<window xmlns='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'>" +
                   "<hbox flex='1'><description flex='1'>foo</description><splitter class='devtools-side-splitter'/>" +
                   "<tabbox flex='1' id='sidebar' class='devtools-sidebar-tabs'><tabs/><tabpanels flex='1'/></tabbox>" +
                   "</hbox>" +
                   "</window>";
--- a/devtools/client/framework/test/browser_toolbox_sidebar_existing_tabs.js
+++ b/devtools/client/framework/test/browser_toolbox_sidebar_existing_tabs.js
@@ -1,15 +1,15 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 // Test that the sidebar widget auto-registers existing tabs.
 
-const {ToolSidebar} = require("devtools/framework/sidebar");
+const {ToolSidebar} = require("devtools/client/framework/sidebar");
 
 const testToolURL = "data:text/xml;charset=utf8,<?xml version='1.0'?>" +
                 "<?xml-stylesheet href='chrome://browser/skin/devtools/common.css' type='text/css'?>" +
                 "<window xmlns='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'>" +
                 "<hbox flex='1'><description flex='1'>test tool</description>" +
                 "<splitter class='devtools-side-splitter'/>" +
                 "<tabbox flex='1' id='sidebar' class='devtools-sidebar-tabs'>" +
                 "<tabs><tab id='tab1' label='tab 1'></tab><tab id='tab2' label='tab 2'></tab></tabs>" +
--- a/devtools/client/framework/test/browser_toolbox_sidebar_overflow_menu.js
+++ b/devtools/client/framework/test/browser_toolbox_sidebar_overflow_menu.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 // Test that the sidebar widget correctly displays the "all tabs..." button
 // when the tabs overflow.
 
-const {ToolSidebar} = require("devtools/framework/sidebar");
+const {ToolSidebar} = require("devtools/client/framework/sidebar");
 
 const testToolDefinition = {
   id: "testTool",
   url: CHROME_URL_ROOT + "browser_toolbox_sidebar_tool.xul",
   label: "Test Tool",
   isTargetSupported: () => true,
   build: (iframeWindow, toolbox) => {
     return {
--- a/devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js
+++ b/devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js
@@ -1,12 +1,12 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 var toolbox, toolIDs, idIndex, secondTime = false,
     reverse = false, nextKey = null, prevKey = null;
 
 function test() {
   addTab("about:blank").then(function() {
     let target = TargetFactory.forTab(gBrowser.selectedTab);
     idIndex = 0;
--- a/devtools/client/framework/test/browser_toolbox_toggle.js
+++ b/devtools/client/framework/test/browser_toolbox_toggle.js
@@ -1,102 +1,102 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Test toggling the toolbox with ACCEL+SHIFT+I / ACCEL+ALT+I and F12 in docked
-// and detached (window) modes.
-
-const URL = "data:text/html;charset=utf-8,Toggling devtools using shortcuts";
-
-var {Toolbox} = require("devtools/framework/toolbox");
-
-add_task(function*() {
-  // Test with ACCEL+SHIFT+I / ACCEL+ALT+I (MacOSX) ; modifiers should match :
-  // - toolbox-key-toggle in browser/devtools/framework/toolbox-window.xul
-  // - key_devToolboxMenuItem in browser/base/content/browser.xul
-  info("Test toggle using CTRL+SHIFT+I/CMD+ALT+I");
-  yield testToggle("I", {
-    accelKey: true,
-    shiftKey: !navigator.userAgent.match(/Mac/),
-    altKey: navigator.userAgent.match(/Mac/)
-  });
-
-  // Test with F12 ; no modifiers
-  info("Test toggle using F12");
-  yield testToggle("VK_F12", {});
-});
-
-function* testToggle(key, modifiers) {
-  let tab = yield addTab(URL + " ; key : '" + key + "'");
-  yield gDevTools.showToolbox(TargetFactory.forTab(tab));
-
-  yield testToggleDockedToolbox(tab, key, modifiers);
-  yield testToggleDetachedToolbox(tab, key, modifiers);
-
-  yield cleanup();
-}
-
-function* testToggleDockedToolbox (tab, key, modifiers) {
-  let toolbox = getToolboxForTab(tab);
-
-  isnot(toolbox.hostType, Toolbox.HostType.WINDOW,
-    "Toolbox is docked in the main window");
-
-  info("verify docked toolbox is destroyed when using toggle key");
-  let onToolboxDestroyed = once(gDevTools, "toolbox-destroyed");
-  EventUtils.synthesizeKey(key, modifiers);
-  yield onToolboxDestroyed;
-  ok(true, "Docked toolbox is destroyed when using a toggle key");
-
-  info("verify new toolbox is created when using toggle key");
-  let onToolboxReady = once(gDevTools, "toolbox-ready");
-  EventUtils.synthesizeKey(key, modifiers);
-  yield onToolboxReady;
-  ok(true, "Toolbox is created by using when toggle key");
-}
-
-function* testToggleDetachedToolbox (tab, key, modifiers) {
-  let toolbox = getToolboxForTab(tab);
-
-  info("change the toolbox hostType to WINDOW");
-
-  yield toolbox.switchHost(Toolbox.HostType.WINDOW);
-  is(toolbox.hostType, Toolbox.HostType.WINDOW,
-    "Toolbox opened on separate window");
-
-  info("Wait for focus on the toolbox window");
-  yield new Promise(res => waitForFocus(res, toolbox.frame.contentWindow));
-
-  info("Focus main window to put the toolbox window in the background");
-
-  let onMainWindowFocus = once(window, "focus");
-  window.focus();
-  yield onMainWindowFocus;
-  ok(true, "Main window focused");
-
-  info("Verify windowed toolbox is focused instead of closed when using " +
-    "toggle key from the main window");
-  let toolboxWindow = toolbox._host._window;
-  let onToolboxWindowFocus = once(toolboxWindow, "focus", true);
-  EventUtils.synthesizeKey(key, modifiers);
-  yield onToolboxWindowFocus;
-  ok(true, "Toolbox focused and not destroyed");
-
-  info("Verify windowed toolbox is destroyed when using toggle key from its " +
-    "own window");
-
-  let onToolboxDestroyed = once(gDevTools, "toolbox-destroyed");
-  EventUtils.synthesizeKey(key, modifiers, toolboxWindow);
-  yield onToolboxDestroyed;
-  ok(true, "Toolbox destroyed");
-}
-
-function getToolboxForTab(tab) {
-  return gDevTools.getToolbox(TargetFactory.forTab(tab));
-}
-
-function* cleanup() {
-  Services.prefs.setCharPref("devtools.toolbox.host",
-    Toolbox.HostType.BOTTOM);
-  gBrowser.removeCurrentTab();
-}
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test toggling the toolbox with ACCEL+SHIFT+I / ACCEL+ALT+I and F12 in docked
+// and detached (window) modes.
+
+const URL = "data:text/html;charset=utf-8,Toggling devtools using shortcuts";
+
+var {Toolbox} = require("devtools/client/framework/toolbox");
+
+add_task(function*() {
+  // Test with ACCEL+SHIFT+I / ACCEL+ALT+I (MacOSX) ; modifiers should match :
+  // - toolbox-key-toggle in browser/devtools/framework/toolbox-window.xul
+  // - key_devToolboxMenuItem in browser/base/content/browser.xul
+  info("Test toggle using CTRL+SHIFT+I/CMD+ALT+I");
+  yield testToggle("I", {
+    accelKey: true,
+    shiftKey: !navigator.userAgent.match(/Mac/),
+    altKey: navigator.userAgent.match(/Mac/)
+  });
+
+  // Test with F12 ; no modifiers
+  info("Test toggle using F12");
+  yield testToggle("VK_F12", {});
+});
+
+function* testToggle(key, modifiers) {
+  let tab = yield addTab(URL + " ; key : '" + key + "'");
+  yield gDevTools.showToolbox(TargetFactory.forTab(tab));
+
+  yield testToggleDockedToolbox(tab, key, modifiers);
+  yield testToggleDetachedToolbox(tab, key, modifiers);
+
+  yield cleanup();
+}
+
+function* testToggleDockedToolbox (tab, key, modifiers) {
+  let toolbox = getToolboxForTab(tab);
+
+  isnot(toolbox.hostType, Toolbox.HostType.WINDOW,
+    "Toolbox is docked in the main window");
+
+  info("verify docked toolbox is destroyed when using toggle key");
+  let onToolboxDestroyed = once(gDevTools, "toolbox-destroyed");
+  EventUtils.synthesizeKey(key, modifiers);
+  yield onToolboxDestroyed;
+  ok(true, "Docked toolbox is destroyed when using a toggle key");
+
+  info("verify new toolbox is created when using toggle key");
+  let onToolboxReady = once(gDevTools, "toolbox-ready");
+  EventUtils.synthesizeKey(key, modifiers);
+  yield onToolboxReady;
+  ok(true, "Toolbox is created by using when toggle key");
+}
+
+function* testToggleDetachedToolbox (tab, key, modifiers) {
+  let toolbox = getToolboxForTab(tab);
+
+  info("change the toolbox hostType to WINDOW");
+
+  yield toolbox.switchHost(Toolbox.HostType.WINDOW);
+  is(toolbox.hostType, Toolbox.HostType.WINDOW,
+    "Toolbox opened on separate window");
+
+  info("Wait for focus on the toolbox window");
+  yield new Promise(res => waitForFocus(res, toolbox.frame.contentWindow));
+
+  info("Focus main window to put the toolbox window in the background");
+
+  let onMainWindowFocus = once(window, "focus");
+  window.focus();
+  yield onMainWindowFocus;
+  ok(true, "Main window focused");
+
+  info("Verify windowed toolbox is focused instead of closed when using " +
+    "toggle key from the main window");
+  let toolboxWindow = toolbox._host._window;
+  let onToolboxWindowFocus = once(toolboxWindow, "focus", true);
+  EventUtils.synthesizeKey(key, modifiers);
+  yield onToolboxWindowFocus;
+  ok(true, "Toolbox focused and not destroyed");
+
+  info("Verify windowed toolbox is destroyed when using toggle key from its " +
+    "own window");
+
+  let onToolboxDestroyed = once(gDevTools, "toolbox-destroyed");
+  EventUtils.synthesizeKey(key, modifiers, toolboxWindow);
+  yield onToolboxDestroyed;
+  ok(true, "Toolbox destroyed");
+}
+
+function getToolboxForTab(tab) {
+  return gDevTools.getToolbox(TargetFactory.forTab(tab));
+}
+
+function* cleanup() {
+  Services.prefs.setCharPref("devtools.toolbox.host",
+    Toolbox.HostType.BOTTOM);
+  gBrowser.removeCurrentTab();
+}
--- a/devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js
+++ b/devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js
@@ -6,17 +6,17 @@
 /**
  * Whitelisting this test.
  * As part of bug 1077403, the leaking uncaught rejection should be fixed.
  */
 thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Shader Editor is " +
   "still waiting for a WebGL context to be created.");
 
 const { DebuggerServer } = require("devtools/server/main");
-const { DebuggerClient } = require("devtools/toolkit/client/main");
+const { DebuggerClient } = require("devtools/shared/client/main");
 
 /**
  * Bug 979536: Ensure fronts are destroyed after toolbox close.
  *
  * The fronts need to be destroyed manually to unbind their onPacket handlers.
  *
  * When you initialize a front and call |this.manage|, it adds a client actor
  * pool that the DebuggerClient uses to route packet replies to that actor.
--- a/devtools/client/framework/test/browser_toolbox_transport_events.js
+++ b/devtools/client/framework/test/browser_toolbox_transport_events.js
@@ -1,13 +1,13 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 const { on, off } = require("sdk/event/core");
-const { DebuggerClient } = require("devtools/toolkit/client/main");
+const { DebuggerClient } = require("devtools/shared/client/main");
 
 function test() {
   gDevTools.on("toolbox-created", onToolboxCreated);
   on(DebuggerClient, "connect", onDebuggerClientConnect);
 
   addTab("about:blank").then(function() {
     let target = TargetFactory.forTab(gBrowser.selectedTab);
     gDevTools.showToolbox(target, "webconsole").then(testResults);
--- a/devtools/client/framework/test/browser_toolbox_window_reload_target.js
+++ b/devtools/client/framework/test/browser_toolbox_window_reload_target.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 const TEST_URL = "data:text/html;charset=utf-8,"+
                  "<html><head><title>Test reload</title></head>"+
                  "<body><h1>Testing reload from devtools</h1></body></html>";
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 var target, toolbox, description, reloadsSent, toolIDs;
 
 function test() {
   addTab(TEST_URL).then(() => {
     target = TargetFactory.forTab(gBrowser.selectedTab);
 
     target.makeRemote().then(() => {
--- a/devtools/client/framework/test/browser_toolbox_window_shortcuts.js
+++ b/devtools/client/framework/test/browser_toolbox_window_shortcuts.js
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 var toolbox, toolIDs, idIndex, modifiedPrefs = [];
 
 function test() {
   addTab("about:blank").then(function() {
     toolIDs = [];
     for (let [id, definition] of gDevTools._tools) {
       if (definition.key) {
--- a/devtools/client/framework/test/browser_toolbox_window_title_changes.js
+++ b/devtools/client/framework/test/browser_toolbox_window_title_changes.js
@@ -1,12 +1,12 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
-var {Toolbox} = require("devtools/framework/toolbox");
+var {Toolbox} = require("devtools/client/framework/toolbox");
 
 function test() {
   const URL_1 = "data:text/plain;charset=UTF-8,abcde";
   const URL_2 = "data:text/plain;charset=UTF-8,12345";
 
   const TOOL_ID_1 = "webconsole";
   const TOOL_ID_2 = "jsdebugger";
 
--- a/devtools/client/framework/test/browser_two_tabs.js
+++ b/devtools/client/framework/test/browser_two_tabs.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Check regression when opening two tabs
  */
 
 var { DebuggerServer } = require("devtools/server/main");
-var { DebuggerClient } = require("devtools/toolkit/client/main");
+var { DebuggerClient } = require("devtools/shared/client/main");
 
 const TAB_URL_1 = "data:text/html;charset=utf-8,foo";
 const TAB_URL_2 = "data:text/html;charset=utf-8,bar";
 
 var gClient;
 var gTab1, gTab2;
 var gTabActor1, gTabActor2;
 
--- a/devtools/client/framework/test/head.js
+++ b/devtools/client/framework/test/head.js
@@ -15,17 +15,17 @@ function toggleAllTools(state) {
       Services.prefs.clearUserPref(tool.visibilityswitch);
     }
   }
 }
 
 function getChromeActors(callback)
 {
   let { DebuggerServer } = require("devtools/server/main");
-  let { DebuggerClient } = require("devtools/toolkit/client/main");
+  let { DebuggerClient } = require("devtools/shared/client/main");
 
   if (!DebuggerServer.initialized) {
     DebuggerServer.init();
     DebuggerServer.addBrowserActors();
   }
   DebuggerServer.allowChromeProcess = true;
 
   let client = new DebuggerClient(DebuggerServer.connectPipe());
--- a/devtools/client/framework/test/shared-head.js
+++ b/devtools/client/framework/test/shared-head.js
@@ -1,21 +1,21 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // This shared-head.js file is used for multiple directories in devtools.
 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
 const {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
-const {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-const {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
-const {ScratchpadManager} = Cu.import("resource:///modules/devtools/scratchpad-manager.jsm", {});
-const {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-const {TargetFactory} = require("devtools/framework/target");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const {gDevTools} = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+const {console} = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
+const {ScratchpadManager} = Cu.import("resource:///modules/devtools/client/scratchpad/scratchpad-manager.jsm", {});
+const {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+const {TargetFactory} = require("devtools/client/framework/target");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const promise = require("promise");
 
 const TEST_DIR = gTestPath.substr(0, gTestPath.lastIndexOf("/"));
 const CHROME_URL_ROOT = TEST_DIR + "/";
 const URL_ROOT = CHROME_URL_ROOT.replace("chrome://mochitests/content/", "http://example.com/");
 
 // All test are asynchronous
 waitForExplicitFinish();
--- a/devtools/client/framework/toolbox-highlighter-utils.js
+++ b/devtools/client/framework/toolbox-highlighter-utils.js
@@ -2,17 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {Cc, Ci, Cu} = require("chrome");
 const promise = require("promise");
 Cu.import("resource://gre/modules/Task.jsm");
-const DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 /**
  * Client-side highlighter shared module.
  * To be used by toolbox panels that need to highlight DOM elements.
  *
  * Highlighting and selecting elements is common enough that it needs to be at
  * toolbox level, accessible by any panel that needs it.
  * That's why the toolbox is the one that initializes the inspector and
--- a/devtools/client/framework/toolbox-hosts.js
+++ b/devtools/client/framework/toolbox-hosts.js
@@ -1,20 +1,20 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 /* globals DOMHelpers, Services */
 
 "use strict";
 
 const {Cu} = require("chrome");
-const EventEmitter = require("devtools/toolkit/event-emitter");
+const EventEmitter = require("devtools/shared/event-emitter");
 const promise = require("promise");
 Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource:///modules/devtools/DOMHelpers.jsm");
+Cu.import("resource:///modules/devtools/client/shared/DOMHelpers.jsm");
 
 /* A host should always allow this much space for the page to be displayed.
  * There is also a min-height on the browser, but we still don't want to set
  * frame.height to be larger than that, since it can cause problems with
  * resizing the toolbox and panel layout. */
 const MIN_PAGE_SIZE = 25;
 
 /**
--- a/devtools/client/framework/toolbox-options.js
+++ b/devtools/client/framework/toolbox-options.js
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {Cu, Cc, Ci} = require("chrome");
 const Services = require("Services");
 const promise = require("promise");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "gDevTools", "resource:///modules/devtools/gDevTools.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "gDevTools", "resource:///modules/devtools/client/framework/gDevTools.jsm");
 
 exports.OptionsPanel = OptionsPanel;
 
 XPCOMUtils.defineLazyGetter(this, "l10n", function() {
   let bundle = Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
   let l10n = function(aName, ...aArgs) {
     try {
       if (aArgs.length == 0) {
@@ -79,17 +79,17 @@ function OptionsPanel(iframeWindow, tool
   this._themeRegistered = this._themeRegistered.bind(this);
   this._themeUnregistered = this._themeUnregistered.bind(this);
   this._disableJSClicked = this._disableJSClicked.bind(this);
 
   this.disableJSNode = this.panelDoc.getElementById("devtools-disable-javascript");
 
   this._addListeners();
 
-  const EventEmitter = require("devtools/toolkit/event-emitter");
+  const EventEmitter = require("devtools/shared/event-emitter");
   EventEmitter.decorate(this);
 }
 
 OptionsPanel.prototype = {
 
   get target() {
     return this.toolbox.target;
   },
--- a/devtools/client/framework/toolbox-process-window.js
+++ b/devtools/client/framework/toolbox-process-window.js
@@ -1,23 +1,23 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
-var { gDevTools } = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
-var { require } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-var { TargetFactory } = require("devtools/framework/target");
-var { Toolbox } = require("devtools/framework/toolbox");
+var { gDevTools } = Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm", {});
+var { require } = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+var { TargetFactory } = require("devtools/client/framework/target");
+var { Toolbox } = require("devtools/client/framework/toolbox");
 var { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
-var { DebuggerClient } = require("devtools/toolkit/client/main");
+var { DebuggerClient } = require("devtools/shared/client/main");
 var { ViewHelpers } =
-  Cu.import("resource:///modules/devtools/ViewHelpers.jsm", {});
+  Cu.import("resource:///modules/devtools/client/shared/widgets/ViewHelpers.jsm", {});
 var { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
 
 /**
  * Shortcuts for accessing various debugger preferences.
  */
 var Prefs = new ViewHelpers.Prefs("devtools.debugger", {
   chromeDebuggingHost: ["Char", "chrome-debugging-host"],
   chromeDebuggingPort: ["Int", "chrome-debugging-port"]
--- a/devtools/client/framework/toolbox.js
+++ b/devtools/client/framework/toolbox.js
@@ -14,65 +14,65 @@ const SPLITCONSOLE_HEIGHT_PREF = "devtoo
 const MIN_ZOOM = 0.5;
 const MAX_ZOOM = 2;
 const OS_HISTOGRAM = "DEVTOOLS_OS_ENUMERATED_PER_USER";
 const OS_IS_64_BITS = "DEVTOOLS_OS_IS_64_BITS_PER_USER";
 const SCREENSIZE_HISTOGRAM = "DEVTOOLS_SCREEN_RESOLUTION_ENUMERATED_PER_USER";
 
 var {Cc, Ci, Cu} = require("chrome");
 var promise = require("promise");
-var EventEmitter = require("devtools/toolkit/event-emitter");
-var Telemetry = require("devtools/shared/telemetry");
-var HUDService = require("devtools/webconsole/hudservice");
-var sourceUtils = require("devtools/shared/source-utils");
+var EventEmitter = require("devtools/shared/event-emitter");
+var Telemetry = require("devtools/client/shared/telemetry");
+var HUDService = require("devtools/client/webconsole/hudservice");
+var sourceUtils = require("devtools/client/shared/source-utils");
 
 Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource:///modules/devtools/gDevTools.jsm");
-Cu.import("resource:///modules/devtools/scratchpad-manager.jsm");
-Cu.import("resource:///modules/devtools/DOMHelpers.jsm");
+Cu.import("resource:///modules/devtools/client/framework/gDevTools.jsm");
+Cu.import("resource:///modules/devtools/client/scratchpad/scratchpad-manager.jsm");
+Cu.import("resource:///modules/devtools/client/shared/DOMHelpers.jsm");
 Cu.import("resource://gre/modules/Task.jsm");
 
 loader.lazyImporter(this, "CommandUtils",
-  "resource:///modules/devtools/DeveloperToolbar.jsm");
+  "resource:///modules/devtools/client/shared/DeveloperToolbar.jsm");
 loader.lazyGetter(this, "toolboxStrings", () => {
   const properties = "chrome://browser/locale/devtools/toolbox.properties";
   const bundle = Services.strings.createBundle(properties);
   return (name, ...args) => {
     try {
       if (!args.length) {
         return bundle.GetStringFromName(name);
       }
       return bundle.formatStringFromName(name, args, args.length);
     } catch (ex) {
       Services.console.logStringMessage("Error reading '" + name + "'");
       return null;
     }
   };
 });
 loader.lazyRequireGetter(this, "getHighlighterUtils",
-  "devtools/framework/toolbox-highlighter-utils", true);
+  "devtools/client/framework/toolbox-highlighter-utils", true);
 loader.lazyRequireGetter(this, "Hosts",
-  "devtools/framework/toolbox-hosts", true);
+  "devtools/client/framework/toolbox-hosts", true);
 loader.lazyRequireGetter(this, "Selection",
-  "devtools/framework/selection", true);
+  "devtools/client/framework/selection", true);
 loader.lazyRequireGetter(this, "InspectorFront",
   "devtools/server/actors/inspector", true);
 loader.lazyRequireGetter(this, "DevToolsUtils",
-  "devtools/toolkit/DevToolsUtils");
+  "devtools/shared/DevToolsUtils");
 loader.lazyRequireGetter(this, "showDoorhanger",
-  "devtools/shared/doorhanger", true);
+  "devtools/client/shared/doorhanger", true);
 loader.lazyRequireGetter(this, "createPerformanceFront",
   "devtools/server/actors/performance", true);
 loader.lazyRequireGetter(this, "system",
-  "devtools/toolkit/shared/system");
+  "devtools/shared/shared/system");
 loader.lazyGetter(this, "osString", () => {
   return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS;
 });
 loader.lazyGetter(this, "registerHarOverlay", () => {
-  return require("devtools/netmonitor/har/toolbox-overlay.js").register;
+  return require("devtools/client/netmonitor/har/toolbox-overlay").register;
 });
 
 // White-list buttons that can be toggled to prevent adding prefs for
 // addons that have manually inserted toolbarbuttons into DOM.
 // (By default, supported target is only local tab)
 const ToolboxButtons = exports.ToolboxButtons = [
   { id: "command-button-pick",
     isTargetSupported: target =>
@@ -83,17 +83,17 @@ const ToolboxButtons = exports.ToolboxBu
       return target.activeTab && target.activeTab.traits.frames;
     }
   },
   { id: "command-button-splitconsole",
     isTargetSupported: target => !target.isAddon },
   { id: "command-button-responsive" },
   { id: "command-button-paintflashing" },
   { id: "command-button-tilt",
-    commands: "devtools/tilt/tilt-commands" },
+    commands: "devtools/client/tilt/tilt-commands" },
   { id: "command-button-scratchpad" },
   { id: "command-button-eyedropper" },
   { id: "command-button-screenshot" },
   { id: "command-button-rulers"}
 ];
 
 /**
  * A "Toolbox" is the component that holds all the tools for one specific
--- a/devtools/client/inspector/inspector-commands.js
+++ b/devtools/client/inspector/inspector-commands.js
@@ -17,15 +17,15 @@ exports.items = [{
       name: "selector",
       type: "node",
       description: l10n.lookup("inspectNodeDesc"),
       manual: l10n.lookup("inspectNodeManual")
     }
   ],
   exec: function(args, context) {
     let target = context.environment.target;
-    let gDevTools = require("resource:///modules/devtools/gDevTools.jsm").gDevTools;
+    let gDevTools = require("resource:///modules/devtools/client/framework/gDevTools.jsm").gDevTools;
 
     return gDevTools.showToolbox(target, "inspector").then(toolbox => {
       toolbox.getCurrentPanel().selection.setNode(args.selector, "gcli");
     });
   }
 }];
--- a/devtools/client/inspector/inspector-panel.js
+++ b/devtools/client/inspector/inspector-panel.js
@@ -4,36 +4,36 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {Cc, Ci, Cu, Cr} = require("chrome");
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 var promise = require("promise");
-var EventEmitter = require("devtools/toolkit/event-emitter");
+var EventEmitter = require("devtools/shared/event-emitter");
 var clipboard = require("sdk/clipboard");
-var {HostType} = require("devtools/framework/toolbox").Toolbox;
+var {HostType} = require("devtools/client/framework/toolbox").Toolbox;
 
-loader.lazyGetter(this, "MarkupView", () => require("devtools/markupview/markup-view").MarkupView);
-loader.lazyGetter(this, "HTMLBreadcrumbs", () => require("devtools/inspector/breadcrumbs").HTMLBreadcrumbs);
-loader.lazyGetter(this, "ToolSidebar", () => require("devtools/framework/sidebar").ToolSidebar);
-loader.lazyGetter(this, "SelectorSearch", () => require("devtools/inspector/selector-search").SelectorSearch);
+loader.lazyGetter(this, "MarkupView", () => require("devtools/client/markupview/markup-view").MarkupView);
+loader.lazyGetter(this, "HTMLBreadcrumbs", () => require("devtools/client/inspector/breadcrumbs").HTMLBreadcrumbs);
+loader.lazyGetter(this, "ToolSidebar", () => require("devtools/client/framework/sidebar").ToolSidebar);
+loader.lazyGetter(this, "SelectorSearch", () => require("devtools/client/inspector/selector-search").SelectorSearch);
 
 loader.lazyGetter(this, "strings", () => {
   return Services.strings.createBundle("chrome://browser/locale/devtools/inspector.properties");
 });
 loader.lazyGetter(this, "toolboxStrings", () => {
   return Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
 });
 loader.lazyGetter(this, "clipboardHelper", () => {
   return Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
 });
 
-loader.lazyImporter(this, "CommandUtils", "resource:///modules/devtools/DeveloperToolbar.jsm");
+loader.lazyImporter(this, "CommandUtils", "resource:///modules/devtools/client/shared/DeveloperToolbar.jsm");
 
 const LAYOUT_CHANGE_TIMER = 250;
 
 /**
  * Represents an open instance of the Inspector for a tab.
  * The inspector controls the breadcrumbs, the markup view, and the sidebar
  * (computed view, rule view, font view and layout view).
  *
--- a/devtools/client/inspector/moz.build
+++ b/devtools/client/inspector/moz.build
@@ -1,12 +1,12 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-EXTRA_JS_MODULES.devtools.inspector += [
+DevToolsModules(
     'breadcrumbs.js',
     'inspector-commands.js',
     'inspector-panel.js',
     'selector-search.js'
-]
+)
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
--- a/devtools/client/inspector/selector-search.js
+++ b/devtools/client/inspector/selector-search.js
@@ -2,18 +2,18 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const { Cu } = require("chrome");
 
 const promise = require("promise");
-loader.lazyGetter(this, "EventEmitter", () => require("devtools/toolkit/event-emitter"));
-loader.lazyGetter(this, "AutocompletePopup", () => require("devtools/shared/autocomplete-popup").AutocompletePopup);
+loader.lazyGetter(this, "EventEmitter", () => require("devtools/shared/event-emitter"));
+loader.lazyGetter(this, "AutocompletePopup", () => require("devtools/client/shared/autocomplete-popup").AutocompletePopup);
 
 // Maximum number of selector suggestions shown in the panel.
 const MAX_SUGGESTIONS = 15;
 
 /**
  * Converts any input box on a page to a CSS selector search and suggestion box.
  *
  * Emits 'processing-done' event when it is done processing the current
--- a/devtools/client/inspector/test/head.js
+++ b/devtools/client/inspector/test/head.js
@@ -18,20 +18,20 @@ const CC = Components.Constructor;
 // Services.prefs.setBoolPref("devtools.dump.emit", true);
 
 var TEST_URL_ROOT = "http://example.com/browser/browser/devtools/inspector/test/";
 var ROOT_TEST_DIR = getRootDirectory(gTestPath);
 
 // All test are asynchronous
 waitForExplicitFinish();
 
-var {require} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
-var {TargetFactory} = require("devtools/framework/target");
-var {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
-var DevToolsUtils = require("devtools/toolkit/DevToolsUtils");
+var {require} = Cu.import("resource://gre/modules/devtools/shared/Loader.jsm", {});
+var {TargetFactory} = require("devtools/client/framework/target");
+var {console} = Cu.import("resource://gre/modules/devtools/shared/Console.jsm", {});
+var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 var promise = require("promise");
 
 // Import the GCLI test helper
 var testDir = gTestPath.substr(0, gTestPath.lastIndexOf("/"));
 Services.scriptloader.loadSubScript(testDir + "../../../commandline/test/helpers.js", this);
 
 // Import helpers registering the test-actor in remote targets
 Services.scriptloader.loadSubScript(testDir + "../../../shared/test/test-actor-registry.js", this);
--- a/devtools/client/layoutview/test/head.js
+++ b/devtools/client/layoutview/test/head.js
@@ -1,21 +1,21 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated