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 263540 1145eb49fdc74f6a641b554d649e71adfa0d4378
parent 263539 efa64dfee210b9ce08e50b94b4467629a6b554bc
child 263541 cedc1af09fcee13949f745793f7b0ee13a81ae77
push id15279
push userjryans@gmail.com
push dateMon, 21 Sep 2015 17:50:50 +0000
treeherderfx-team@8648bb20f956 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdevtools
bugs912121
milestone44.0a1
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.