├── .editorconfig ├── .gitignore ├── .jscsrc ├── .jshintrc ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── build.sh ├── docs ├── building.md ├── https.md └── tips.md ├── gfx ├── icon.icns ├── icon.ico └── icon.png ├── iconset.sh ├── package.json └── src ├── dt ├── .jscsrc ├── Images │ ├── applicationCache.png │ ├── breakpoint.png │ ├── breakpointConditional.png │ ├── breakpointConditional_2x.png │ ├── breakpoint_2x.png │ ├── checker.png │ ├── chromeDisabledSelect.png │ ├── chromeDisabledSelect_2x.png │ ├── chromeLeft.png │ ├── chromeMiddle.png │ ├── chromeRight.png │ ├── chromeSelect.png │ ├── chromeSelect_2x.png │ ├── cookie.png │ ├── database.png │ ├── databaseTable.png │ ├── deleteIcon.png │ ├── domain.png │ ├── errorWave.png │ ├── errorWave_2x.png │ ├── fileSystem.png │ ├── forward.png │ ├── frame.png │ ├── graphLabelCalloutLeft.png │ ├── graphLabelCalloutRight.png │ ├── indexedDB.png │ ├── indexedDBIndex.png │ ├── indexedDBObjectStore.png │ ├── localStorage.png │ ├── navigationControls.png │ ├── navigationControls_2x.png │ ├── notifications.svg │ ├── paneAddButtons.png │ ├── paneFilterButtons.png │ ├── paneRefreshButtons.png │ ├── popoverArrows.png │ ├── profileGroupIcon.png │ ├── profileIcon.png │ ├── profileSmallIcon.png │ ├── radioDot.png │ ├── resourceCSSIcon.png │ ├── resourceDocumentIcon.png │ ├── resourceDocumentIconSmall.png │ ├── resourceJSIcon.png │ ├── resourcePlainIcon.png │ ├── resourcePlainIconSmall.png │ ├── resourcesTimeGraphIcon.png │ ├── responsiveDesign.png │ ├── responsiveDesign_2x.png │ ├── searchNext.png │ ├── searchPrev.png │ ├── securityPropertyInfo.svg │ ├── securityPropertyInsecure.svg │ ├── securityPropertySecure.svg │ ├── securityPropertyWarning.svg │ ├── securityStateInsecure.svg │ ├── securityStateNeutral.svg │ ├── securityStateSecure.svg │ ├── serviceWorker.svg │ ├── sessionStorage.png │ ├── settingsListRemove.png │ ├── settingsListRemove_2x.png │ ├── speech.png │ ├── src │ │ ├── breakpoint.svg │ │ ├── breakpointConditional.svg │ │ ├── errorWave.svg │ │ ├── optimize_png.hashes │ │ ├── responsiveDesign.svg │ │ ├── settingsListRemove.svg │ │ ├── svg2png.hashes │ │ └── toolbarButtonGlyphs.svg │ ├── thumbActiveHoriz.png │ ├── thumbActiveVert.png │ ├── thumbHoriz.png │ ├── thumbHoverHoriz.png │ ├── thumbHoverVert.png │ ├── thumbVert.png │ ├── toolbarButtonGlyphs.png │ ├── toolbarButtonGlyphs_2x.png │ ├── toolbarItemSelected.png │ ├── toolbarResizerHorizontal.png │ ├── toolbarResizerVertical.png │ ├── touchCursor.png │ ├── touchCursor_2x.png │ ├── transformControls.png │ ├── transformControls_2x.png │ └── updateServiceWorker.svg ├── OWNERS ├── Runtime.js ├── accessibility │ ├── AccessibilityModel.js │ ├── AccessibilitySidebarView.js │ ├── AccessibilityStrings.js │ ├── accessibilityNode.css │ └── module.json ├── acorn │ ├── LICENSE │ └── acorn.js ├── animation │ ├── AnimationControlPane.js │ ├── AnimationGroupPreviewUI.js │ ├── AnimationModel.js │ ├── AnimationTimeline.js │ ├── AnimationUI.js │ ├── animationTimeline.css │ └── module.json ├── audits │ ├── AuditCategories.js │ ├── AuditCategory.js │ ├── AuditController.js │ ├── AuditExtensionCategory.js │ ├── AuditFormatters.js │ ├── AuditLauncherView.js │ ├── AuditResultView.js │ ├── AuditRules.js │ ├── AuditsPanel.js │ ├── auditResultTree.css │ ├── auditsPanel.css │ └── module.json ├── bindings │ ├── BlackboxSupport.js │ ├── BreakpointManager.js │ ├── CSSWorkspaceBinding.js │ ├── CompilerScriptMapping.js │ ├── ContentProviderBasedProjectDelegate.js │ ├── ContentScriptProjectDecorator.js │ ├── DebuggerWorkspaceBinding.js │ ├── DefaultScriptMapping.js │ ├── FileSystemWorkspaceBinding.js │ ├── FileUtils.js │ ├── LiveLocation.js │ ├── NetworkMapping.js │ ├── NetworkProject.js │ ├── PresentationConsoleMessageHelper.js │ ├── ResourceScriptMapping.js │ ├── ResourceUtils.js │ ├── SASSSourceMapping.js │ ├── StylesSourceMapping.js │ ├── TempFile.js │ ├── WorkspaceController.js │ └── module.json ├── cm │ ├── LICENSE │ ├── LICENSE_python │ ├── PRESUBMIT.py │ ├── activeline.js │ ├── closebrackets.js │ ├── codemirror.css │ ├── codemirror.js │ ├── comment.js │ ├── css.js │ ├── headlesscodemirror.js │ ├── htmlembedded.js │ ├── htmlmixed.js │ ├── javascript.js │ ├── markselection.js │ ├── matchbrackets.js │ ├── overlay.js │ ├── simple.js │ └── xml.js ├── cm_modes │ ├── DefaultCodeMirrorMimeMode.js │ ├── LICENSE │ ├── PRESUBMIT.py │ ├── clike.js │ ├── clojure.js │ ├── coffeescript.js │ ├── livescript.js │ ├── module.json │ ├── php.js │ ├── python.js │ ├── shell.js │ └── stylus.js ├── common │ ├── Color.js │ ├── Console.js │ ├── ContentProvider.js │ ├── Geometry.js │ ├── ModuleExtensionInterfaces.js │ ├── NotificationService.js │ ├── Object.js │ ├── OutputStream.js │ ├── ParsedURL.js │ ├── Progress.js │ ├── ResourceType.js │ ├── Settings.js │ ├── StaticContentProvider.js │ ├── TestBase.js │ ├── TextDictionary.js │ ├── TextRange.js │ ├── TextUtils.js │ ├── Throttler.js │ ├── UIString.js │ ├── WebInspector.js │ ├── WorkerRuntime.js │ └── module.json ├── components │ ├── BreakpointsSidebarPaneBase.js │ ├── CustomPreviewSection.js │ ├── DOMBreakpointsSidebarPane.js │ ├── DOMPresentationUtils.js │ ├── DataSaverInfobar.js │ ├── DebuggerPresentationUtils.js │ ├── DockController.js │ ├── Drawer.js │ ├── EventListenersUtils.js │ ├── EventListenersView.js │ ├── ExecutionContextModel.js │ ├── ExecutionContextSelector.js │ ├── HandlerRegistry.js │ ├── InspectorView.js │ ├── Linkifier.js │ ├── NetworkConditionsSelector.js │ ├── ObjectPopoverHelper.js │ ├── ObjectPropertiesSection.js │ ├── Reload.js │ ├── RemoteObjectPreviewFormatter.js │ ├── ShortcutsScreen.js │ ├── breakpointsList.css │ ├── customPreviewSection.css │ ├── domUtils.css │ ├── eventListenersView.css │ ├── inspectorViewTabbedPane.css │ ├── module.json │ ├── networkConditionsSettingsTab.css │ ├── objectPropertiesSection.css │ └── objectValue.css ├── components_lazy │ ├── CookiesTable.js │ ├── FilmStripModel.js │ ├── FilmStripView.js │ ├── filmStripDialog.css │ ├── filmStripView.css │ └── module.json ├── console │ ├── ConsolePanel.js │ ├── ConsoleView.js │ ├── ConsoleViewMessage.js │ ├── consoleView.css │ └── module.json ├── devices │ ├── DevicesDialog.js │ ├── DevicesView.js │ ├── devicesView.css │ └── module.json ├── devtools.js ├── diff │ ├── Diff.js │ ├── diff_match_patch.js │ └── module.json ├── elements │ ├── BezierEditor.js │ ├── BezierUI.js │ ├── ComputedStyleWidget.js │ ├── ElementStatePaneWidget.js │ ├── ElementsBreadcrumbs.js │ ├── ElementsPanel.js │ ├── ElementsSidebarPane.js │ ├── ElementsSidebarView.js │ ├── ElementsTreeElement.js │ ├── ElementsTreeElementHighlighter.js │ ├── ElementsTreeOutline.js │ ├── EventListenersWidget.js │ ├── InspectElementModeController.js │ ├── MetricsSidebarPane.js │ ├── PlatformFontsWidget.js │ ├── PropertiesWidget.js │ ├── PropertyChangeHighlighter.js │ ├── SharedSidebarModel.js │ ├── Spectrum.js │ ├── StylesPopoverHelper.js │ ├── StylesSectionModel.js │ ├── StylesSidebarPane.js │ ├── bezierEditor.css │ ├── breadcrumbs.css │ ├── computedStyleSidebarPane.css │ ├── elementsPanel.css │ ├── elementsTreeOutline.css │ ├── module.json │ └── spectrum.css ├── emulated_devices │ ├── google-nexus-5-horizontal-default-1x.png │ ├── google-nexus-5-horizontal-default-2x.png │ ├── google-nexus-5-horizontal-keyboard-1x.png │ ├── google-nexus-5-horizontal-keyboard-2x.png │ ├── google-nexus-5-horizontal-navigation-1x.png │ ├── google-nexus-5-horizontal-navigation-2x.png │ ├── google-nexus-5-vertical-default-1x.png │ ├── google-nexus-5-vertical-default-2x.png │ ├── google-nexus-5-vertical-keyboard-1x.png │ ├── google-nexus-5-vertical-keyboard-2x.png │ ├── google-nexus-5-vertical-navigation-1x.png │ ├── google-nexus-5-vertical-navigation-2x.png │ └── module.json ├── emulation │ ├── DeviceModeButton.js │ ├── DevicesSettingsTab.js │ ├── EmulatedDevices.js │ ├── InspectedPagePlaceholder.js │ ├── MediaQueryInspector.js │ ├── OverridesSupport.js │ ├── OverridesUI.js │ ├── OverridesView.js │ ├── ResponsiveDesignView.js │ ├── SensorsView.js │ ├── devicesSettingsTab.css │ ├── module.json │ ├── overrides.css │ ├── responsiveDesignView.css │ └── sensors.css ├── es6.js ├── extensions │ ├── ExtensionAPI.js │ ├── ExtensionAuditCategory.js │ ├── ExtensionPanel.js │ ├── ExtensionRegistryStub.js │ ├── ExtensionServer.js │ ├── ExtensionView.js │ └── module.json ├── externs.js ├── heap_snapshot_worker │ ├── AllocationProfile.js │ ├── HeapSnapshot.js │ ├── HeapSnapshotLoader.js │ ├── HeapSnapshotWorker.js │ ├── HeapSnapshotWorkerDispatcher.js │ ├── JSHeapSnapshot.js │ └── module.json ├── host │ ├── InspectorFrontendHost.js │ ├── InspectorFrontendHostAPI.js │ ├── Platform.js │ ├── ResourceLoader.js │ ├── UserMetrics.js │ └── module.json ├── inspector.css ├── inspector.html ├── inspector.js ├── inspector.json ├── inspectorStyle.css ├── layers │ ├── LayerPaintProfilerView.js │ ├── LayersPanel.js │ └── module.json ├── main │ ├── AdvancedApp.js │ ├── FrontendWebSocketAPI.js │ ├── Main.js │ ├── OverlayController.js │ ├── RenderingOptions.js │ ├── SimpleApp.js │ ├── Tests.js │ ├── module.json │ ├── remoteDebuggingTerminatedScreen.css │ ├── renderingOptions.css │ └── targetCrashedScreen.css ├── network │ ├── BlockedURLsPane.js │ ├── EventSourceMessagesView.js │ ├── FilterSuggestionBuilder.js │ ├── HARWriter.js │ ├── NetworkConfigView.js │ ├── NetworkDataGridNode.js │ ├── NetworkItemView.js │ ├── NetworkLogView.js │ ├── NetworkOverview.js │ ├── NetworkPanel.js │ ├── NetworkTimeCalculator.js │ ├── RequestCookiesView.js │ ├── RequestHTMLView.js │ ├── RequestHeadersView.js │ ├── RequestJSONView.js │ ├── RequestPreviewView.js │ ├── RequestResponseView.js │ ├── RequestTimingView.js │ ├── RequestView.js │ ├── ResourceWebSocketFrameView.js │ ├── XMLView.js │ ├── blockedURLsPane.css │ ├── eventSourceMessagesView.css │ ├── module.json │ ├── networkConfigView.css │ ├── networkLogView.css │ ├── networkPanel.css │ ├── requestCookiesView.css │ ├── requestHeadersView.css │ ├── webSocketFrameView.css │ └── xmlView.css ├── platform │ ├── DOMExtension.js │ ├── module.json │ └── utilities.js ├── popover.css ├── profiler │ ├── CPUProfileBottomUpDataGrid.js │ ├── CPUProfileDataGrid.js │ ├── CPUProfileFlameChart.js │ ├── CPUProfileTopDownDataGrid.js │ ├── CPUProfileView.js │ ├── HeapSnapshotCommon.js │ ├── HeapSnapshotDataGrids.js │ ├── HeapSnapshotGridNodes.js │ ├── HeapSnapshotProxy.js │ ├── HeapSnapshotView.js │ ├── ProfileLauncherView.js │ ├── ProfileTypeRegistry.js │ ├── ProfilesPanel.js │ ├── TargetsComboBoxController.js │ ├── heapProfiler.css │ ├── module.json │ └── profilesPanel.css ├── promises │ ├── PromisePane.js │ ├── module.json │ └── promisePane.css ├── protocol.json ├── resources │ ├── ApplicationCacheItemsView.js │ ├── CookieItemsView.js │ ├── DOMStorageItemsView.js │ ├── DOMStorageModel.js │ ├── DatabaseModel.js │ ├── DatabaseQueryView.js │ ├── DatabaseTableView.js │ ├── DirectoryContentView.js │ ├── FileContentView.js │ ├── FileSystemModel.js │ ├── FileSystemView.js │ ├── IndexedDBModel.js │ ├── IndexedDBViews.js │ ├── ResourcesPanel.js │ ├── ServiceWorkerCacheViews.js │ ├── ServiceWorkersView.js │ ├── indexedDBViews.css │ ├── module.json │ ├── resourcesPanel.css │ ├── serviceWorkerCacheViews.css │ └── serviceWorkersView.css ├── screencast │ ├── ScreencastApp.js │ ├── ScreencastView.js │ ├── module.json │ └── screencastView.css ├── script_formatter_worker │ ├── AcornTokenizer.js │ ├── CSSFormatter.js │ ├── ESTreeWalker.js │ ├── JavaScriptFormatter.js │ ├── ScriptFormatterWorker.js │ └── module.json ├── sdk │ ├── ApplicationCacheModel.js │ ├── CPUProfileDataModel.js │ ├── CPUProfilerModel.js │ ├── CSSMetadata.js │ ├── CSSParser.js │ ├── CSSStyleModel.js │ ├── ConsoleModel.js │ ├── ContentProviders.js │ ├── CookieParser.js │ ├── DOMModel.js │ ├── DebuggerModel.js │ ├── HAREntry.js │ ├── HeapProfilerModel.js │ ├── InspectorBackend.js │ ├── InspectorBackendHostedMode.js │ ├── NetworkLog.js │ ├── NetworkManager.js │ ├── NetworkRequest.js │ ├── PaintProfiler.js │ ├── RemoteObject.js │ ├── Resource.js │ ├── ResourceTreeModel.js │ ├── RuntimeModel.js │ ├── Script.js │ ├── ServiceWorkerCacheModel.js │ ├── ServiceWorkerManager.js │ ├── SourceMap.js │ ├── Target.js │ ├── TracingManager.js │ ├── TracingModel.js │ ├── WorkerManager.js │ └── module.json ├── security │ ├── SecurityModel.js │ ├── SecurityPanel.js │ ├── lockIcon.css │ ├── mainView.css │ ├── module.json │ ├── originView.css │ └── sidebar.css ├── settings │ ├── EditFileSystemView.js │ ├── FrameworkBlackboxSettingsTab.js │ ├── SettingsScreen.js │ ├── editFileSystemView.css │ ├── frameworkBlackboxSettingsTab.css │ ├── module.json │ └── settingsScreen.css ├── sidebarPane.css ├── snippets │ ├── ScriptSnippetModel.js │ ├── SnippetStorage.js │ └── module.json ├── source_frame │ ├── CodeMirrorDictionary.js │ ├── CodeMirrorTextEditor.js │ ├── CodeMirrorUtils.js │ ├── FontView.js │ ├── ImageView.js │ ├── ResourceSourceFrame.js │ ├── SourceFrame.js │ ├── TextEditorAutocompleteController.js │ ├── cmdevtools.css │ ├── fontView.css │ ├── imageView.css │ └── module.json ├── sources │ ├── AddSourceMapURLDialog.js │ ├── AdvancedSearchView.js │ ├── AsyncOperationsSidebarPane.js │ ├── CSSSourceFrame.js │ ├── CallStackSidebarPane.js │ ├── EditingLocationHistoryManager.js │ ├── EventListenerBreakpointsSidebarPane.js │ ├── FileBasedSearchResultsPane.js │ ├── FilePathScoreFunction.js │ ├── FilteredItemSelectionDialog.js │ ├── InplaceFormatterEditorAction.js │ ├── JavaScriptBreakpointsSidebarPane.js │ ├── JavaScriptCompiler.js │ ├── JavaScriptSourceFrame.js │ ├── NavigatorView.js │ ├── ObjectEventListenersSidebarPane.js │ ├── RevisionHistoryView.js │ ├── ScopeChainSidebarPane.js │ ├── ScriptFormatter.js │ ├── ScriptFormatterEditorAction.js │ ├── ServiceWorkersSidebarPane.js │ ├── SimpleHistoryManager.js │ ├── SourcesNavigator.js │ ├── SourcesPanel.js │ ├── SourcesSearchScope.js │ ├── SourcesView.js │ ├── StyleSheetOutlineDialog.js │ ├── TabbedEditorContainer.js │ ├── ThreadsSidebarPane.js │ ├── UIList.js │ ├── UISourceCodeFrame.js │ ├── WatchExpressionsSidebarPane.js │ ├── WorkspaceMappingTip.js │ ├── XHRBreakpointsSidebarPane.js │ ├── addSourceMapURLDialog.css │ ├── filteredItemSelectionDialog.css │ ├── module.json │ ├── navigatorView.css │ ├── revisionHistory.css │ ├── serviceWorkersSidebar.css │ ├── sourcesPanel.css │ ├── sourcesSearch.css │ ├── sourcesView.css │ └── uiList.css ├── temp_storage_shared_worker │ ├── TempStorageSharedWorker.js │ └── module.json ├── timeline │ ├── CountersGraph.js │ ├── LayerDetailsView.js │ ├── LayerTreeModel.js │ ├── LayerTreeOutline.js │ ├── LayerViewHost.js │ ├── Layers3DView.js │ ├── MemoryCountersGraph.js │ ├── PaintProfilerView.js │ ├── TimelineEventOverview.js │ ├── TimelineFlameChart.js │ ├── TimelineFrameModel.js │ ├── TimelineJSProfile.js │ ├── TimelineLayersView.js │ ├── TimelineModel.js │ ├── TimelinePaintProfilerView.js │ ├── TimelinePanel.js │ ├── TimelinePresentationModel.js │ ├── TimelineTreeView.js │ ├── TimelineUIUtils.js │ ├── TimelineView.js │ ├── TransformController.js │ ├── invalidationsTree.css │ ├── module.json │ ├── timelinePanel.css │ └── timelineStatusDialog.css ├── toolbox.css ├── toolbox.html ├── toolbox.js ├── toolbox.json ├── toolbox_bootstrap │ ├── Toolbox.js │ └── module.json ├── ui │ ├── ActionRegistry.js │ ├── ColorSwatch.js │ ├── Context.js │ ├── ContextMenu.js │ ├── DOMSyntaxHighlighter.js │ ├── Dialog.js │ ├── DropDownMenu.js │ ├── DropTarget.js │ ├── EmptyWidget.js │ ├── FilterBar.js │ ├── ForwardedInputEventHandler.js │ ├── HistoryInput.js │ ├── Infobar.js │ ├── InplaceEditor.js │ ├── KeyboardShortcut.js │ ├── ListWidget.js │ ├── Panel.js │ ├── Popover.js │ ├── ProgressIndicator.js │ ├── ResizerWidget.js │ ├── RootView.js │ ├── SearchableView.js │ ├── Section.js │ ├── SettingsUI.js │ ├── ShortcutRegistry.js │ ├── SidebarPane.js │ ├── SidebarTreeElement.js │ ├── SoftContextMenu.js │ ├── SplitWidget.js │ ├── StackView.js │ ├── SuggestBox.js │ ├── TabbedPane.js │ ├── TextPrompt.js │ ├── ThrottledWidget.js │ ├── Toolbar.js │ ├── Tooltip.js │ ├── UIUtils.js │ ├── ViewportControl.js │ ├── Widget.js │ ├── ZoomManager.js │ ├── checkboxTextLabel.css │ ├── closeButton.css │ ├── colorSwatch.css │ ├── dialog.css │ ├── dropTarget.css │ ├── emptyWidget.css │ ├── filter.css │ ├── infobar.css │ ├── inspectorCommon.css │ ├── inspectorSyntaxHighlight.css │ ├── listWidget.css │ ├── module.json │ ├── panelEnablerView.css │ ├── progressIndicator.css │ ├── propertiesSection.css │ ├── radioButton.css │ ├── searchableView.css │ ├── section.css │ ├── smallIcon.css │ ├── softContextMenu.css │ ├── splitWidget.css │ ├── suggestBox.css │ ├── tabbedPane.css │ ├── textButton.css │ ├── textPrompt.css │ ├── toolbar.css │ ├── tooltip.css │ ├── treeoutline.css │ └── treeoutline.js ├── ui_lazy │ ├── DataGrid.js │ ├── FlameChart.js │ ├── OverviewGrid.js │ ├── PieChart.js │ ├── ShowMoreDataGridNode.js │ ├── SortableDataGrid.js │ ├── TimelineGrid.js │ ├── TimelineOverviewPane.js │ ├── ViewportDataGrid.js │ ├── dataGrid.css │ ├── flameChart.css │ ├── module.json │ ├── overviewGrid.css │ ├── pieChart.css │ └── timelineGrid.css └── workspace │ ├── FileManager.js │ ├── FileSystemMapping.js │ ├── IsolatedFileSystem.js │ ├── IsolatedFileSystemManager.js │ ├── SearchConfig.js │ ├── UISourceCode.js │ ├── Workspace.js │ └── module.json ├── lib ├── captured-connection.js ├── front-end-connection.js ├── init-time.js ├── rdp-message-formatter.js └── traffic-interceptor.js ├── main.js └── menu.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 4 9 | 10 | [*.{json,yml}] 11 | indent_style = space 12 | indent_size = 2 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | bin/ 4 | npm-debug.log 5 | -------------------------------------------------------------------------------- /.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "google", 3 | "validateIndentation": 4, 4 | "maximumLineLength": { 5 | "value": 120 6 | }, 7 | "esnext": true 8 | } -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "esnext": true, 3 | "node": true, 4 | "validthis": true 5 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "5.0" -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Reporting issues and requesting feature 2 | 3 | Please make sure that the issue has not been already reported. 4 | 5 | Take time to include as much details as needed to reproduce your problem or justify your request. 6 | 7 | Remember that reports are great, but Pull Requests are *so much more awesome*. 8 | 9 | ## How Betwixt works 10 | 11 | Betwixt is an [Electron](http://electron.atom.io/) app that runs a custom Chrome DevTools instance in the frontend and a proxy server in the backend. Backend talks to the frontend over a websocket connection using [Remote Debugging Protocol](https://developer.chrome.com/devtools/docs/debugger-protocol). Proxy server is responsible for capturing traffic and pushing it to the frontend. 12 | 13 | ## Main goals of the project 14 | 15 | Betwixt should nail these two things: 16 | 17 | - Capture information about all passing traffic as accurately and transparently as possible (avoid modifying requests, responses and timing). 18 | - Format valid Remote Debugging Protocol messages based on the gathered network information and pass them to the frontend. 19 | 20 | DevTools will do the rest. 21 | 22 | ## Folder structure 23 | 24 | - `/src` - Betwixt source files 25 | - `/src/dt` - customized snapshot of Chrome DevTools 26 | - `/src/main.js` - app entry point 27 | 28 | ## Tips and tricks 29 | 30 | All messages sent between backend and frontend can be explored using [Remote Debugging Protocol Viewer](https://chromedevtools.github.io/debugger-protocol-viewer/). However, since some details are not documented, you may want to see how "regular" DevTools are doing things by sniffing the protocol ([as explained in the "Sniffing the protocol" section](https://developer.chrome.com/devtools/docs/debugger-protocol)). 31 | 32 | ## Versioning 33 | 34 | Let's do the [semver](http://semver.org/) thing. 35 | 36 | ## Testing 37 | 38 | `npm test`. ATM it will only run `jshint` and `jscs`. It might be a bit to late for the TDD thing, but tests are still welcome. -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2015 Konrad Dzwinel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Betwixt](http://i.imgur.com/TKNRxnx.png) 2 | 3 | [![Build Status](https://travis-ci.org/kdzwinel/betwixt.svg?branch=master)](https://travis-ci.org/kdzwinel/betwixt) 4 | [![Dependency Status](https://david-dm.org/kdzwinel/betwixt.svg)](https://david-dm.org/kdzwinel/betwixt) 5 | 6 | Betwixt will help you analyze web traffic outside the browser using familiar Chrome DevTools interface. 7 | 8 |

Betwixt in action

9 | Even more Betwixt action! 10 | 11 | ## Installing 12 | 13 | Download the [latest release](https://github.com/kdzwinel/betwixt/releases/latest) for your operating system, [build your own bundle](docs/building.md) or [run Betwixt from the source code](docs/building.md). 14 | 15 | ## Setting up 16 | 17 | In order to capture traffic, you'll have to direct it to the proxy created by Betwixt in the background (`http://localhost:8008`). 18 | 19 | If you wish to analyze traffic system wide: 20 | - on macOS - `System Preferences → Network → Advanced → Proxies → Web Proxy (HTTP)` 21 | - on Windows - `Settings → Network & Internet → Proxy` 22 | - on Ubuntu - `All Settings → Network → Network Proxy` 23 | 24 | ![Setting up proxy on Windows 10 and macOS](https://i.imgur.com/irjeELo.png) 25 | 26 | If you want to capture traffic coming from a single terminal use `export http_proxy=http://localhost:8008`. 27 | 28 | Capturing encrypted traffic (HTTPS) requires additional step, see [this doc](docs/https.md) for instructions. 29 | 30 | ## Contributing 31 | 32 | All contributors are very welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) fore more details. 33 | 34 | #### License [MIT](LICENSE.md) 35 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # clean up after last build 4 | rm -rf build/ 5 | rm -rf bin/ 6 | 7 | mkdir build/ 8 | mkdir bin/ 9 | 10 | # move files required by production app to the /build folder 11 | cp -r src/ build/src/ 12 | cp -r gfx/ build/gfx/ 13 | cp package.json build/ 14 | 15 | # install all dependencies 16 | cd build/ 17 | npm i --production 18 | cd .. 19 | 20 | # build packages for all supported OS versions 21 | electron-packager ./build/ Betwixt --out ./bin/ --version=0.36.12 --platform=all --arch=all --icon=./gfx/icon 22 | -------------------------------------------------------------------------------- /docs/building.md: -------------------------------------------------------------------------------- 1 | ## Building 2 | 3 | ### Setup 4 | 5 | To clone and run this repository you'll need [Git](https://git-scm.com) and [Node.js 4.x+](https://nodejs.org/en/download/) (which comes with [npm](http://npmjs.com)) installed on your computer. From your command line: 6 | 7 | ```bash 8 | # Clone this repository 9 | $ git clone https://github.com/kdzwinel/betwixt.git 10 | # Go into the repository 11 | $ cd betwixt 12 | # Install dependencies 13 | $ npm install 14 | ``` 15 | 16 | ### Running 17 | 18 | You can run Betwixt right away using `npm start`. 19 | 20 | ### Command line configuration options 21 | 22 | - `--proxy-port` - change the default port for proxy 23 | - `--ssl-ca-dir` - change the default directory where auto-generated SSL certificates are kept 24 | 25 | Example usage: `npm start -- --proxy-port=1234 --ssl-ca-dir="/Users/kdzwinel/Documents/betwixt-certs"` 26 | 27 | ### Creating a bundle 28 | 29 | [build.sh](https://github.com/kdzwinel/betwixt/blob/master/build.sh) is responsible for creating bundles for all supported platforms and architectures. You should be able to easily adjust it to your needs. 30 | -------------------------------------------------------------------------------- /docs/https.md: -------------------------------------------------------------------------------- 1 | ## HTTPS 2 | 3 | ### Root Certificate 4 | 5 | In order to capture encrypted traffic, you'll have to install root certificate provided by Betwixt. 6 | The certificate is generated for you when you first launch Betwixt. You can quickly locate it on disk using `Tools > Root Certificate` menu. 7 | 8 | ![Finding certificate file](http://i.imgur.com/xFMBStj.png) 9 | 10 | `ca.pem` has to be imported and marked as trusted. 11 | 12 | On OS X this is done via Keychain app as shown below. 13 | 14 | ![Installing certificate on OS X](http://i.imgur.com/lm2TIw4.png) 15 | 16 | After certificate is installed, expand the `Trust` section and toggle the first dropdown to `Always Trust`: 17 | 18 | ![Always trust](https://i.imgur.com/rQyHMUG.png) 19 | 20 | On Windows use certmgr. 21 | 22 | ![Installing certificate on Windows 10](http://i.imgur.com/8IWpKR0.png) 23 | 24 | ### Proxy 25 | 26 | Direct the traffic to the proxy created by Betwixt in the background (`http://localhost:8008`). 27 | 28 | If you wish to analyze traffic system wide: 29 | - on OS X - `System Preferences → Network → Advanced → Proxies → Secure Web Proxy (HTTPS)` 30 | - on Ubuntu - `All Settings → Network → Network Proxy` 31 | - on Windows - `Settings → Network & Internet → Proxy` 32 | 33 | ![Setting up proxy on OS X](http://i.imgur.com/JslKSz8.png) 34 | 35 | ![Setting up proxy on Windows 10](http://i.imgur.com/ihSZEVb.png) 36 | 37 | If you want to capture traffic coming from a single terminal use `export https_proxy=http://localhost:8008`. Note that NodeJS has a hardcoded list of CA certificates so it doesn't care for Keychain/certmgr/etc. You may need to use `export NODE_TLS_REJECT_UNAUTHORIZED=0` to overcome this issue. 38 | -------------------------------------------------------------------------------- /docs/tips.md: -------------------------------------------------------------------------------- 1 | # Tips & Tricks 2 | Somehow related to Betwixt. 3 | 4 | ## Chrome 5 | 6 | - Set proxy: `--proxy-server=localhost:8008` 7 | - Run as a new temporary user: `--user-data-dir="/tmp/chrome_tmp_profile"` 8 | - Ignore SSL errors: `--ignore-urlfetcher-cert-requests --ignore-certificate-errors` 9 | 10 | ## Terminal 11 | 12 | - Set HTTP proxy: `export http_proxy=http://localhost:8008` 13 | - Set HTTPS proxy: `export https_proxy=http://localhost:8008` 14 | -------------------------------------------------------------------------------- /gfx/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/gfx/icon.icns -------------------------------------------------------------------------------- /gfx/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/gfx/icon.ico -------------------------------------------------------------------------------- /gfx/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/gfx/icon.png -------------------------------------------------------------------------------- /iconset.sh: -------------------------------------------------------------------------------- 1 | !#/bin/sh 2 | 3 | mkdir gfx/icon.iconset 4 | sips -z 16 16 gfx/icon.png --out gfx/icon.iconset/icon_16x16.png 5 | sips -z 32 32 gfx/icon.png --out gfx/icon.iconset/icon_16x16@2x.png 6 | sips -z 32 32 gfx/icon.png --out gfx/icon.iconset/icon_32x32.png 7 | sips -z 64 64 gfx/icon.png --out gfx/icon.iconset/icon_32x32@2x.png 8 | sips -z 128 128 gfx/icon.png --out gfx/icon.iconset/icon_128x128.png 9 | sips -z 256 256 gfx/icon.png --out gfx/icon.iconset/icon_128x128@2x.png 10 | sips -z 256 256 gfx/icon.png --out gfx/icon.iconset/icon_256x256.png 11 | sips -z 512 512 gfx/icon.png --out gfx/icon.iconset/icon_256x256@2x.png 12 | sips -z 512 512 gfx/icon.png --out gfx/icon.iconset/icon_512x512.png 13 | cp gfx/icon.png gfx/icon.iconset/icon_512x512@2x.png 14 | iconutil -c icns gfx/icon.iconset 15 | rm -R gfx/icon.iconset 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "betwixt", 3 | "version": "1.6.1", 4 | "description": "Web Debugging Proxy based on Chrome DevTools Network panel", 5 | "main": "src/main.js", 6 | "scripts": { 7 | "start": "electron src/main.js", 8 | "test": "jshint src/lib/ src/*.js && jscs src/lib/ src/*.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/kdzwinel/betwixt.git" 13 | }, 14 | "keywords": [ 15 | "traffic", 16 | "proxy", 17 | "mitm", 18 | "devtools" 19 | ], 20 | "author": "Konrad Dzwinel", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/kdzwinel/betwixt/issues" 24 | }, 25 | "homepage": "https://github.com/kdzwinel/betwixt", 26 | "dependencies": { 27 | "chalk": "^1.1.1", 28 | "http-mitm-proxy": "^0.5.0", 29 | "istextorbinary": "^2.0.0", 30 | "minimist": "^1.2.0" 31 | }, 32 | "devDependencies": { 33 | "electron-packager": "^6.0.0", 34 | "electron-prebuilt": "^0.36.12", 35 | "jscs": "^2.6.0", 36 | "jshint": "^2.8.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/dt/.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | // rules documentation: http://jscs.info/rules.html 3 | 4 | "esnext": true, 5 | 6 | "requireSpaceAfterKeywords": [ 7 | "if", 8 | "else", 9 | "for", 10 | "while", 11 | "do", 12 | "switch", 13 | "return" 14 | ], 15 | "disallowKeywords": [ 16 | "with" 17 | ], 18 | "disallowKeywordsOnNewLine": [ 19 | "else", 20 | "catch" 21 | ], 22 | 23 | "disallowSpaceAfterPrefixUnaryOperators": true, 24 | "disallowSpaceBeforePostfixUnaryOperators": [ 25 | "++", 26 | "--" 27 | ], 28 | "requireSpaceBeforeBinaryOperators": true, 29 | "requireSpaceAfterBinaryOperators": true, 30 | 31 | "disallowMultipleVarDecl": true, 32 | 33 | "disallowSpacesInsideParentheses": true, 34 | "disallowEmptyBlocks": true, 35 | 36 | "requireParenthesesAroundIIFE": true, 37 | "requireSpaceBetweenArguments": true, 38 | "requireSpacesInFunctionDeclaration": { 39 | "beforeOpeningCurlyBrace": true 40 | }, 41 | "requireSpacesInAnonymousFunctionExpression": { 42 | "beforeOpeningCurlyBrace": true 43 | }, 44 | "disallowSpacesInNamedFunctionExpression": { 45 | "beforeOpeningRoundBrace": true 46 | }, 47 | "requireSpacesInNamedFunctionExpression": { 48 | "beforeOpeningCurlyBrace": true 49 | }, 50 | 51 | "requireSpacesInConditionalExpression": { 52 | "afterTest": true, 53 | "beforeConsequent": true, 54 | "afterConsequent": true, 55 | "beforeAlternate": true 56 | }, 57 | 58 | "disallowSpaceBeforeBinaryOperators": [ 59 | "," 60 | ], 61 | "requireCommaBeforeLineBreak": true, 62 | 63 | "validateQuoteMarks": "\"", 64 | "disallowMultipleLineStrings": true, 65 | 66 | "disallowImplicitTypeConversion": [ 67 | "numeric", 68 | "binary" 69 | ], 70 | "disallowYodaConditions": true, 71 | 72 | "disallowSpacesInsideArrayBrackets": true, 73 | 74 | "disallowSpaceAfterObjectKeys": true, 75 | 76 | "disallowQuotedKeysInObjects": true, 77 | 78 | "requireSpaceAfterLineComment": true, 79 | "requireLineFeedAtFileEnd": true, 80 | "disallowMultipleLineBreaks": true, 81 | "disallowMixedSpacesAndTabs": true, 82 | "disallowTrailingWhitespace": true, 83 | "validateLineBreaks": "LF" 84 | } 85 | -------------------------------------------------------------------------------- /src/dt/Images/applicationCache.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/applicationCache.png -------------------------------------------------------------------------------- /src/dt/Images/breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/breakpoint.png -------------------------------------------------------------------------------- /src/dt/Images/breakpointConditional.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/breakpointConditional.png -------------------------------------------------------------------------------- /src/dt/Images/breakpointConditional_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/breakpointConditional_2x.png -------------------------------------------------------------------------------- /src/dt/Images/breakpoint_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/breakpoint_2x.png -------------------------------------------------------------------------------- /src/dt/Images/checker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/checker.png -------------------------------------------------------------------------------- /src/dt/Images/chromeDisabledSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeDisabledSelect.png -------------------------------------------------------------------------------- /src/dt/Images/chromeDisabledSelect_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeDisabledSelect_2x.png -------------------------------------------------------------------------------- /src/dt/Images/chromeLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeLeft.png -------------------------------------------------------------------------------- /src/dt/Images/chromeMiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeMiddle.png -------------------------------------------------------------------------------- /src/dt/Images/chromeRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeRight.png -------------------------------------------------------------------------------- /src/dt/Images/chromeSelect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeSelect.png -------------------------------------------------------------------------------- /src/dt/Images/chromeSelect_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/chromeSelect_2x.png -------------------------------------------------------------------------------- /src/dt/Images/cookie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/cookie.png -------------------------------------------------------------------------------- /src/dt/Images/database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/database.png -------------------------------------------------------------------------------- /src/dt/Images/databaseTable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/databaseTable.png -------------------------------------------------------------------------------- /src/dt/Images/deleteIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/deleteIcon.png -------------------------------------------------------------------------------- /src/dt/Images/domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/domain.png -------------------------------------------------------------------------------- /src/dt/Images/errorWave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/errorWave.png -------------------------------------------------------------------------------- /src/dt/Images/errorWave_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/errorWave_2x.png -------------------------------------------------------------------------------- /src/dt/Images/fileSystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/fileSystem.png -------------------------------------------------------------------------------- /src/dt/Images/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/forward.png -------------------------------------------------------------------------------- /src/dt/Images/frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/frame.png -------------------------------------------------------------------------------- /src/dt/Images/graphLabelCalloutLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/graphLabelCalloutLeft.png -------------------------------------------------------------------------------- /src/dt/Images/graphLabelCalloutRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/graphLabelCalloutRight.png -------------------------------------------------------------------------------- /src/dt/Images/indexedDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/indexedDB.png -------------------------------------------------------------------------------- /src/dt/Images/indexedDBIndex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/indexedDBIndex.png -------------------------------------------------------------------------------- /src/dt/Images/indexedDBObjectStore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/indexedDBObjectStore.png -------------------------------------------------------------------------------- /src/dt/Images/localStorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/localStorage.png -------------------------------------------------------------------------------- /src/dt/Images/navigationControls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/navigationControls.png -------------------------------------------------------------------------------- /src/dt/Images/navigationControls_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/navigationControls_2x.png -------------------------------------------------------------------------------- /src/dt/Images/notifications.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/dt/Images/paneAddButtons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/paneAddButtons.png -------------------------------------------------------------------------------- /src/dt/Images/paneFilterButtons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/paneFilterButtons.png -------------------------------------------------------------------------------- /src/dt/Images/paneRefreshButtons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/paneRefreshButtons.png -------------------------------------------------------------------------------- /src/dt/Images/popoverArrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/popoverArrows.png -------------------------------------------------------------------------------- /src/dt/Images/profileGroupIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/profileGroupIcon.png -------------------------------------------------------------------------------- /src/dt/Images/profileIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/profileIcon.png -------------------------------------------------------------------------------- /src/dt/Images/profileSmallIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/profileSmallIcon.png -------------------------------------------------------------------------------- /src/dt/Images/radioDot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/radioDot.png -------------------------------------------------------------------------------- /src/dt/Images/resourceCSSIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourceCSSIcon.png -------------------------------------------------------------------------------- /src/dt/Images/resourceDocumentIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourceDocumentIcon.png -------------------------------------------------------------------------------- /src/dt/Images/resourceDocumentIconSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourceDocumentIconSmall.png -------------------------------------------------------------------------------- /src/dt/Images/resourceJSIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourceJSIcon.png -------------------------------------------------------------------------------- /src/dt/Images/resourcePlainIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourcePlainIcon.png -------------------------------------------------------------------------------- /src/dt/Images/resourcePlainIconSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourcePlainIconSmall.png -------------------------------------------------------------------------------- /src/dt/Images/resourcesTimeGraphIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/resourcesTimeGraphIcon.png -------------------------------------------------------------------------------- /src/dt/Images/responsiveDesign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/responsiveDesign.png -------------------------------------------------------------------------------- /src/dt/Images/responsiveDesign_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/responsiveDesign_2x.png -------------------------------------------------------------------------------- /src/dt/Images/searchNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/searchNext.png -------------------------------------------------------------------------------- /src/dt/Images/searchPrev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/searchPrev.png -------------------------------------------------------------------------------- /src/dt/Images/securityPropertyInfo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/dt/Images/securityPropertyInsecure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/dt/Images/securityPropertySecure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/dt/Images/securityPropertyWarning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/dt/Images/securityStateInsecure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/dt/Images/securityStateNeutral.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/dt/Images/securityStateSecure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/dt/Images/serviceWorker.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/dt/Images/sessionStorage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/sessionStorage.png -------------------------------------------------------------------------------- /src/dt/Images/settingsListRemove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/settingsListRemove.png -------------------------------------------------------------------------------- /src/dt/Images/settingsListRemove_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/settingsListRemove_2x.png -------------------------------------------------------------------------------- /src/dt/Images/speech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/speech.png -------------------------------------------------------------------------------- /src/dt/Images/src/breakpoint.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/dt/Images/src/breakpointConditional.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/dt/Images/src/errorWave.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 22 | 42 | 49 | 50 | 52 | 53 | 55 | image/svg+xml 56 | 58 | 59 | 60 | 61 | 62 | 67 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /src/dt/Images/src/optimize_png.hashes: -------------------------------------------------------------------------------- 1 | { 2 | "breakpointConditional.svg": "4cf90210b2af2ed84db2f60b07bcde28", 3 | "errorWave.svg": "e183fa242a22ed4784a92f6becbc2c45", 4 | "settingsListRemove.svg": "ce9e7c5c5cdaef28e6ee51d9478d5485", 5 | "toolbarButtonGlyphs.svg": "26ea602e51d2cab0fad35c6967e99115", 6 | "breakpoint.svg": "69cd92d807259c022791112809b97799", 7 | "responsiveDesign.svg": "1d6e963f88e5e448a7cff85f75a0e6b0" 8 | } -------------------------------------------------------------------------------- /src/dt/Images/src/responsiveDesign.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/dt/Images/src/settingsListRemove.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/dt/Images/src/svg2png.hashes: -------------------------------------------------------------------------------- 1 | { 2 | "breakpointConditional.svg": "4cf90210b2af2ed84db2f60b07bcde28", 3 | "errorWave.svg": "e183fa242a22ed4784a92f6becbc2c45", 4 | "settingsListRemove.svg": "ce9e7c5c5cdaef28e6ee51d9478d5485", 5 | "toolbarButtonGlyphs.svg": "26ea602e51d2cab0fad35c6967e99115", 6 | "breakpoint.svg": "69cd92d807259c022791112809b97799", 7 | "responsiveDesign.svg": "1d6e963f88e5e448a7cff85f75a0e6b0" 8 | } -------------------------------------------------------------------------------- /src/dt/Images/thumbActiveHoriz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/thumbActiveHoriz.png -------------------------------------------------------------------------------- /src/dt/Images/thumbActiveVert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/thumbActiveVert.png -------------------------------------------------------------------------------- /src/dt/Images/thumbHoriz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/thumbHoriz.png -------------------------------------------------------------------------------- /src/dt/Images/thumbHoverHoriz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/thumbHoverHoriz.png -------------------------------------------------------------------------------- /src/dt/Images/thumbHoverVert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/thumbHoverVert.png -------------------------------------------------------------------------------- /src/dt/Images/thumbVert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/thumbVert.png -------------------------------------------------------------------------------- /src/dt/Images/toolbarButtonGlyphs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/toolbarButtonGlyphs.png -------------------------------------------------------------------------------- /src/dt/Images/toolbarButtonGlyphs_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/toolbarButtonGlyphs_2x.png -------------------------------------------------------------------------------- /src/dt/Images/toolbarItemSelected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/toolbarItemSelected.png -------------------------------------------------------------------------------- /src/dt/Images/toolbarResizerHorizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/toolbarResizerHorizontal.png -------------------------------------------------------------------------------- /src/dt/Images/toolbarResizerVertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/toolbarResizerVertical.png -------------------------------------------------------------------------------- /src/dt/Images/touchCursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/touchCursor.png -------------------------------------------------------------------------------- /src/dt/Images/touchCursor_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/touchCursor_2x.png -------------------------------------------------------------------------------- /src/dt/Images/transformControls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/transformControls.png -------------------------------------------------------------------------------- /src/dt/Images/transformControls_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/Images/transformControls_2x.png -------------------------------------------------------------------------------- /src/dt/OWNERS: -------------------------------------------------------------------------------- 1 | alph@chromium.org 2 | caseq@chromium.org 3 | dgozman@chromium.org 4 | lushnikov@chromium.org 5 | pfeldman@chromium.org 6 | sergeyv@chromium.org 7 | yurys@chromium.org 8 | -------------------------------------------------------------------------------- /src/dt/accessibility/AccessibilityModel.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | 6 | /** 7 | * @constructor 8 | * @extends {WebInspector.SDKModel} 9 | * @param {!WebInspector.Target} target 10 | */ 11 | WebInspector.AccessibilityModel = function(target) 12 | { 13 | WebInspector.SDKModel.call(this, WebInspector.AccessibilityModel, target); 14 | this._agent = target.accessibilityAgent(); 15 | }; 16 | 17 | WebInspector.AccessibilityModel.prototype = { 18 | /** 19 | * @param {!DOMAgent.NodeId} nodeId 20 | * @return {!Promise.} 21 | */ 22 | getAXNode: function(nodeId) 23 | { 24 | /** 25 | * @param {?string} error 26 | * @param {!AccessibilityAgent.AXNode=} value 27 | */ 28 | function parsePayload(error, value) 29 | { 30 | if (error) 31 | console.error("AccessibilityAgent.getAXNode(): " + error); 32 | return value || null; 33 | } 34 | return this._agent.getAXNode(nodeId, parsePayload); 35 | }, 36 | 37 | __proto__: WebInspector.SDKModel.prototype 38 | } 39 | 40 | WebInspector.AccessibilityModel._symbol = Symbol("AccessibilityModel"); 41 | /** 42 | * @param {!WebInspector.Target} target 43 | * @return {!WebInspector.AccessibilityModel} 44 | */ 45 | WebInspector.AccessibilityModel.fromTarget = function(target) 46 | { 47 | if (!target[WebInspector.AccessibilityModel._symbol]) 48 | target[WebInspector.AccessibilityModel._symbol] = new WebInspector.AccessibilityModel(target); 49 | 50 | return target[WebInspector.AccessibilityModel._symbol]; 51 | } 52 | -------------------------------------------------------------------------------- /src/dt/accessibility/accessibilityNode.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .ax-computed-text { 8 | padding: 3px 5px 0; 9 | background-image: url(Images/speech.png); 10 | background-repeat: no-repeat; 11 | background-position: 16px center; 12 | padding: 4px 4px 0 4px; 13 | padding-left: 36px; 14 | min-height: 18px; 15 | } 16 | 17 | .ax-computed-text div { 18 | display: inline-block; 19 | padding: 2px; 20 | width: 100%; 21 | text-overflow: ellipsis; 22 | white-space: nowrap; 23 | overflow: hidden; 24 | width: 100%; 25 | } 26 | 27 | div.ax-text-alternatives { 28 | margin-bottom: 3px; 29 | border-bottom: 1px solid #BFBFBF; 30 | } 31 | 32 | .ax-name { 33 | color: rgb(136, 19, 145); 34 | flex-shrink: 0; 35 | } 36 | 37 | .ax-readable-name { 38 | flex-shrink: 0; 39 | } 40 | 41 | .ax-readable-string { 42 | font-style: italic; 43 | } 44 | 45 | span.ax-role { 46 | font-weight: bold; 47 | } 48 | 49 | span.ax-internal-role { 50 | font-style: italic; 51 | } 52 | 53 | .ax-ignored-info { 54 | padding: 6px; 55 | } 56 | 57 | .ax-ignored-node-pane { 58 | background-color: hsl(0, 0%, 96%); 59 | } 60 | 61 | .tree-outline li { 62 | padding-top: 5px; 63 | } 64 | 65 | .tree-outline li.invalid { 66 | position: relative; 67 | left: -2px; 68 | text-decoration: line-through; 69 | } 70 | 71 | .tree-outline label[is=dt-icon-label] { 72 | position: relative; 73 | left: -11px; 74 | } 75 | 76 | span.ax-value-undefined { 77 | font-style: italic; 78 | } 79 | 80 | .ax-value-source-unused { 81 | opacity: 0.5; 82 | } 83 | 84 | .ax-value-source-superseded, 85 | .ax-value-source-invalid { 86 | text-decoration: line-through; 87 | } 88 | 89 | .tree-outline label[is=dt-icon-label] + .ax-name { 90 | margin-left: -11px; 91 | } 92 | -------------------------------------------------------------------------------- /src/dt/accessibility/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "title": "Accessibility", 5 | "type": "@WebInspector.Widget", 6 | "location": "elements-panel", 7 | "className": "WebInspector.AccessibilitySidebarView" 8 | } 9 | ], 10 | "dependencies": ["elements"], 11 | "experiment": "accessibilityInspection", 12 | "scripts": [ 13 | "AccessibilityModel.js", 14 | "AccessibilitySidebarView.js", 15 | "AccessibilityStrings.js" 16 | ], 17 | "resources": [ 18 | "accessibilityNode.css" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/dt/acorn/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2012-2014 by various contributors (see AUTHORS) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /src/dt/animation/AnimationGroupPreviewUI.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @param {!WebInspector.AnimationModel.AnimationGroup} model 8 | */ 9 | WebInspector.AnimationGroupPreviewUI = function(model) 10 | { 11 | this._model = model; 12 | this.element = createElementWithClass("div", "animation-buffer-preview"); 13 | this._svg = this.element.createSVGChild("svg"); 14 | this._svg.setAttribute("width", "100%"); 15 | this._svg.setAttribute("preserveAspectRatio", "none"); 16 | this._svg.setAttribute("height", "100%"); 17 | this._svg.setAttribute("viewBox", "0 0 100 27"); 18 | this._svg.setAttribute("shape-rendering", "crispEdges"); 19 | this._render(); 20 | } 21 | 22 | WebInspector.AnimationGroupPreviewUI.prototype = { 23 | /** 24 | * @return {number} 25 | */ 26 | _groupDuration: function() 27 | { 28 | var duration = 0; 29 | for (var anim of this._model.animations()) { 30 | var animDuration = anim.source().delay() + anim.source().duration(); 31 | if (animDuration > duration) 32 | duration = animDuration; 33 | } 34 | return duration; 35 | }, 36 | 37 | _render: function() 38 | { 39 | this._svg.removeChildren(); 40 | const numberOfAnimations = Math.min(this._model.animations().length, 10); 41 | var timeToPixelRatio = 100 / Math.max(this._groupDuration(), 300); 42 | for (var i = 0; i < numberOfAnimations; i++) { 43 | var effect = this._model.animations()[i].source(); 44 | var line = this._svg.createSVGChild("line"); 45 | line.setAttribute("x1", effect.delay() * timeToPixelRatio); 46 | line.setAttribute("x2", (effect.delay() + effect.duration()) * timeToPixelRatio); 47 | var y = Math.floor(27 / numberOfAnimations * i) + 1; 48 | line.setAttribute("y1", y); 49 | line.setAttribute("y2", y); 50 | line.style.stroke = WebInspector.AnimationUI.Color(this._model.animations()[i]); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /src/dt/animation/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.ToolbarItem.Provider", 5 | "className": "WebInspector.AnimationControlPane.ButtonProvider", 6 | "order": 2, 7 | "location": "styles-sidebarpane-toolbar" 8 | } 9 | ], 10 | "dependencies": [ 11 | "elements" 12 | ], 13 | "scripts": [ 14 | "AnimationModel.js", 15 | "AnimationGroupPreviewUI.js", 16 | "AnimationTimeline.js", 17 | "AnimationUI.js", 18 | "AnimationControlPane.js" 19 | ], 20 | "resources": [ 21 | "animationTimeline.css" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /src/dt/audits/AuditCategory.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2014 Google Inc. All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are 6 | * met: 7 | * 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * 2. Redistributions in binary form must reproduce the above 12 | * copyright notice, this list of conditions and the following disclaimer 13 | * in the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS 17 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. 20 | * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | */ 28 | 29 | /** 30 | * @interface 31 | */ 32 | WebInspector.AuditCategory = function() 33 | { 34 | } 35 | 36 | WebInspector.AuditCategory.prototype = { 37 | /** 38 | * @return {string} 39 | */ 40 | get id() 41 | { 42 | }, 43 | 44 | /** 45 | * @return {string} 46 | */ 47 | get displayName() 48 | { 49 | }, 50 | 51 | /** 52 | * @param {!WebInspector.Target} target 53 | * @param {!Array.} requests 54 | * @param {function(!WebInspector.AuditRuleResult)} ruleResultCallback 55 | * @param {!WebInspector.Progress} progress 56 | */ 57 | run: function(target, requests, ruleResultCallback, progress) 58 | { 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/dt/audits/auditResultTree.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .severity { 8 | background-image: url(Images/toolbarButtonGlyphs.png); 9 | background-size: 352px 168px; 10 | display: inline-block; 11 | width: 10px; 12 | height: 10px; 13 | position: relative; 14 | top: 1px; 15 | margin-right: 4px; 16 | } 17 | 18 | li { 19 | -webkit-user-select: text; 20 | } 21 | 22 | @media (-webkit-min-device-pixel-ratio: 1.5) { 23 | .severity { 24 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 25 | } 26 | } /* media */ 27 | 28 | .severity.severe { 29 | background-position: -224px -96px; 30 | } 31 | 32 | .severity.warning { 33 | background-position: -246px -96px; 34 | } 35 | 36 | .severity.info { 37 | background-position: -235px -96px; 38 | } 39 | .audit-result { 40 | font-weight: bold; 41 | } 42 | -------------------------------------------------------------------------------- /src/dt/audits/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.PanelFactory", 5 | "name": "audits", 6 | "title": "Audits", 7 | "order": 90, 8 | "className": "WebInspector.AuditsPanelFactory" 9 | } 10 | ], 11 | "dependencies": [ 12 | "components", 13 | "extensions" 14 | ], 15 | "scripts": [ 16 | "AuditsPanel.js", 17 | "AuditCategory.js", 18 | "AuditCategories.js", 19 | "AuditController.js", 20 | "AuditFormatters.js", 21 | "AuditLauncherView.js", 22 | "AuditResultView.js", 23 | "AuditRules.js", 24 | "AuditExtensionCategory.js" 25 | ], 26 | "resources": [ 27 | "auditsPanel.css", 28 | "auditResultTree.css" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /src/dt/bindings/LiveLocation.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 8 | */ 9 | WebInspector.LiveLocation = function(updateDelegate) 10 | { 11 | this._updateDelegate = updateDelegate; 12 | } 13 | 14 | WebInspector.LiveLocation.prototype = { 15 | update: function() 16 | { 17 | var uiLocation = this.uiLocation(); 18 | if (!uiLocation) 19 | return; 20 | if (this._updateDelegate(uiLocation)) 21 | this.dispose(); 22 | }, 23 | 24 | /** 25 | * @return {?WebInspector.UILocation} 26 | */ 27 | uiLocation: function() 28 | { 29 | throw "Not implemented"; 30 | }, 31 | 32 | dispose: function() 33 | { 34 | // Overridden by subclasses. 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/dt/bindings/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": ["sdk", "platform", "workspace"], 3 | "scripts": [ 4 | "LiveLocation.js", 5 | "CompilerScriptMapping.js", 6 | "ResourceScriptMapping.js", 7 | "SASSSourceMapping.js", 8 | "StylesSourceMapping.js", 9 | "CSSWorkspaceBinding.js", 10 | "DebuggerWorkspaceBinding.js", 11 | "BreakpointManager.js", 12 | "ContentProviderBasedProjectDelegate.js", 13 | "DefaultScriptMapping.js", 14 | "FileSystemWorkspaceBinding.js", 15 | "FileUtils.js", 16 | "BlackboxSupport.js", 17 | "NetworkMapping.js", 18 | "NetworkProject.js", 19 | "PresentationConsoleMessageHelper.js", 20 | "ResourceUtils.js", 21 | "TempFile.js", 22 | "WorkspaceController.js", 23 | "ContentScriptProjectDecorator.js" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /src/dt/cm/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /src/dt/cm/LICENSE_python: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010 Timothy Farrell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /src/dt/cm/PRESUBMIT.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2014 Google Inc. All rights reserved. 2 | # 3 | # Redistribution and use in source and binary forms, with or without 4 | # modification, are permitted provided that the following conditions are 5 | # met: 6 | # 7 | # * Redistributions of source code must retain the above copyright 8 | # notice, this list of conditions and the following disclaimer. 9 | # * Redistributions in binary form must reproduce the above 10 | # copyright notice, this list of conditions and the following disclaimer 11 | # in the documentation and/or other materials provided with the 12 | # distribution. 13 | # * Neither the name of Google Inc. nor the names of its 14 | # contributors may be used to endorse or promote products derived from 15 | # this software without specific prior written permission. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | 30 | def _CheckCodeMirrorChanges(input_api, output_api): 31 | errorText = ("ERROR: Attempt to modify CodeMirror. The only allowed changes are " 32 | "rolls from the upstream (http://codemirror.net). If this is a roll, " 33 | "make sure you mention 'roll CodeMirror' (no quotes) in the change description.\n" 34 | "CodeMirror rolling instructions:\n" 35 | " https://sites.google.com/a/chromium.org/devtools-codemirror-rolling") 36 | changeDescription = input_api.change.DescriptionText() 37 | errors = [] 38 | if not "roll codemirror" in changeDescription.lower(): 39 | errors.append(output_api.PresubmitError(errorText)) 40 | return errors 41 | 42 | 43 | def CheckChangeOnUpload(input_api, output_api): 44 | results = [] 45 | results.extend(_CheckCodeMirrorChanges(input_api, output_api)) 46 | return results 47 | -------------------------------------------------------------------------------- /src/dt/cm_modes/DefaultCodeMirrorMimeMode.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @implements {WebInspector.CodeMirrorMimeMode} 8 | */ 9 | WebInspector.DefaultCodeMirrorMimeMode = function() 10 | { 11 | } 12 | 13 | WebInspector.DefaultCodeMirrorMimeMode.prototype = { 14 | /** 15 | * @param {!Runtime.Extension} extension 16 | * @override 17 | */ 18 | install: function(extension) 19 | { 20 | var modeFileName = extension.descriptor()["fileName"]; 21 | var modeContent = extension.module().resource(modeFileName); 22 | self.eval(modeContent + "\n//# sourceURL=" + modeFileName); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/dt/cm_modes/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /src/dt/cm_modes/PRESUBMIT.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 The Chromium Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | 6 | def _CheckCodeMirrorChanges(input_api, output_api): 7 | errorText = ("ERROR: Attempt to modify CodeMirror. The only allowed changes are " 8 | "rolls from the upstream (http://codemirror.net). If this is a roll, " 9 | "make sure you mention 'roll CodeMirror' (no quotes) in the change description.\n" 10 | "CodeMirror rolling instructions:\n" 11 | " https://sites.google.com/a/chromium.org/devtools-codemirror-rolling") 12 | changeDescription = input_api.change.DescriptionText() 13 | errors = [] 14 | if "roll codemirror" not in changeDescription.lower(): 15 | errors.append(output_api.PresubmitError(errorText)) 16 | return errors 17 | 18 | 19 | def CheckChangeOnUpload(input_api, output_api): 20 | results = [] 21 | results.extend(_CheckCodeMirrorChanges(input_api, output_api)) 22 | return results 23 | -------------------------------------------------------------------------------- /src/dt/common/NotificationService.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | /** 8 | * @constructor 9 | * @extends {WebInspector.Object} 10 | */ 11 | WebInspector.NotificationService = function() { } 12 | 13 | WebInspector.NotificationService.prototype = { 14 | __proto__: WebInspector.Object.prototype 15 | } 16 | 17 | WebInspector.NotificationService.Events = { 18 | InspectorAgentEnabledForTests: "InspectorAgentEnabledForTests", 19 | SelectedNodeChanged: "SelectedNodeChanged" 20 | } 21 | 22 | WebInspector.notifications = new WebInspector.NotificationService(); 23 | -------------------------------------------------------------------------------- /src/dt/common/OutputStream.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @interface 7 | */ 8 | WebInspector.OutputStream = function() 9 | { 10 | } 11 | 12 | WebInspector.OutputStream.prototype = { 13 | /** 14 | * @param {string} data 15 | * @param {function(!WebInspector.OutputStream)=} callback 16 | */ 17 | write: function(data, callback) { }, 18 | 19 | close: function() { } 20 | } 21 | 22 | /** 23 | * @constructor 24 | * @implements {WebInspector.OutputStream} 25 | */ 26 | WebInspector.StringOutputStream = function() 27 | { 28 | this._data = ""; 29 | } 30 | 31 | WebInspector.StringOutputStream.prototype = { 32 | /** 33 | * @override 34 | * @param {string} chunk 35 | * @param {function(!WebInspector.OutputStream)=} callback 36 | */ 37 | write: function(chunk, callback) 38 | { 39 | this._data += chunk; 40 | }, 41 | 42 | /** 43 | * @override 44 | */ 45 | close: function() 46 | { 47 | }, 48 | 49 | /** 50 | * @return {string} 51 | */ 52 | data: function() 53 | { 54 | return this._data; 55 | } 56 | } -------------------------------------------------------------------------------- /src/dt/common/StaticContentProvider.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @implements {WebInspector.ContentProvider} 8 | * @param {!WebInspector.ResourceType} contentType 9 | * @param {string} content 10 | * @param {string=} contentURL 11 | */ 12 | WebInspector.StaticContentProvider = function(contentType, content, contentURL) 13 | { 14 | this._content = content; 15 | this._contentType = contentType; 16 | this._contentURL = contentURL || ""; 17 | } 18 | 19 | /** 20 | * @param {string} content 21 | * @param {string} query 22 | * @param {boolean} caseSensitive 23 | * @param {boolean} isRegex 24 | * @param {function(!Array.)} callback 25 | */ 26 | WebInspector.StaticContentProvider.searchInContent = function(content, query, caseSensitive, isRegex, callback) 27 | { 28 | function performSearch() 29 | { 30 | callback(WebInspector.ContentProvider.performSearchInContent(content, query, caseSensitive, isRegex)); 31 | } 32 | 33 | // searchInContent should call back later. 34 | setTimeout(performSearch.bind(null), 0); 35 | } 36 | 37 | WebInspector.StaticContentProvider.prototype = { 38 | /** 39 | * @override 40 | * @return {string} 41 | */ 42 | contentURL: function() 43 | { 44 | return this._contentURL; 45 | }, 46 | 47 | /** 48 | * @override 49 | * @return {!WebInspector.ResourceType} 50 | */ 51 | contentType: function() 52 | { 53 | return this._contentType; 54 | }, 55 | 56 | /** 57 | * @override 58 | * @param {function(?string)} callback 59 | */ 60 | requestContent: function(callback) 61 | { 62 | callback(this._content); 63 | }, 64 | 65 | /** 66 | * @override 67 | * @param {string} query 68 | * @param {boolean} caseSensitive 69 | * @param {boolean} isRegex 70 | * @param {function(!Array.)} callback 71 | */ 72 | searchInContent: function(query, caseSensitive, isRegex, callback) 73 | { 74 | WebInspector.StaticContentProvider.searchInContent(this._content, query, caseSensitive, isRegex, callback); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/dt/common/WebInspector.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | self.WebInspector = {} 8 | -------------------------------------------------------------------------------- /src/dt/common/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "platform" 4 | ], 5 | "scripts": [ 6 | "WorkerRuntime.js", 7 | "WebInspector.js", 8 | "TextDictionary.js", 9 | "Object.js", 10 | "NotificationService.js", 11 | "Color.js", 12 | "Geometry.js", 13 | "Console.js", 14 | "ContentProvider.js", 15 | "ParsedURL.js", 16 | "Progress.js", 17 | "ResourceType.js", 18 | "Settings.js", 19 | "StaticContentProvider.js", 20 | "OutputStream.js", 21 | "TestBase.js", 22 | "TextRange.js", 23 | "TextUtils.js", 24 | "Throttler.js", 25 | "UIString.js", 26 | "ModuleExtensionInterfaces.js" 27 | ], 28 | "skip_compilation": [ 29 | "TestBase.js" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /src/dt/components/DataSaverInfobar.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.Infobar} 8 | */ 9 | WebInspector.DataSaverInfobar = function() 10 | { 11 | WebInspector.Infobar.call(this, WebInspector.Infobar.Type.Warning, WebInspector.settings.moduleSetting("disableDataSaverInfobar")); 12 | this.element.createTextChild(WebInspector.UIString("Consider disabling ")); 13 | this.element.appendChild(WebInspector.linkifyURLAsNode("https://support.google.com/chrome/answer/2392284?hl=en", "Chrome Data Saver", undefined, true)); 14 | this.element.createTextChild(WebInspector.UIString(" while debugging.")); 15 | } 16 | 17 | WebInspector.DataSaverInfobar._infobars = []; 18 | 19 | /** 20 | * @param {!WebInspector.Panel} panel 21 | */ 22 | WebInspector.DataSaverInfobar.maybeShowInPanel = function(panel) 23 | { 24 | if (Runtime.queryParam("remoteFrontend")) { 25 | var infobar = new WebInspector.DataSaverInfobar(); 26 | WebInspector.DataSaverInfobar._infobars.push(infobar); 27 | panel.showInfobar(infobar); 28 | } 29 | } 30 | 31 | WebInspector.DataSaverInfobar.prototype = { 32 | /** 33 | * @override 34 | */ 35 | close: function() 36 | { 37 | for (var infobar of WebInspector.DataSaverInfobar._infobars) 38 | WebInspector.Infobar.prototype.close.call(infobar); 39 | }, 40 | 41 | __proto__: WebInspector.Infobar.prototype 42 | } 43 | -------------------------------------------------------------------------------- /src/dt/components/DebuggerPresentationUtils.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | WebInspector.DebuggerPresentationUtils = {} 6 | 7 | /** 8 | * @param {?WebInspector.DebuggerModel} debuggerModel 9 | * @param {!Array.=} stackTrace 10 | * @param {!ConsoleAgent.AsyncStackTrace=} asyncStackTrace 11 | * @param {boolean=} showBlackboxed 12 | * @return {?ConsoleAgent.CallFrame} 13 | */ 14 | WebInspector.DebuggerPresentationUtils.callFrameAnchorFromStackTrace = function(debuggerModel, stackTrace, asyncStackTrace, showBlackboxed) 15 | { 16 | /** 17 | * @param {?Array.=} stackTrace 18 | * @return {?ConsoleAgent.CallFrame} 19 | */ 20 | function innerCallFrameAnchorFromStackTrace(stackTrace) 21 | { 22 | if (!stackTrace || !stackTrace.length) 23 | return null; 24 | if (showBlackboxed) 25 | return stackTrace[0]; 26 | for (var i = 0; i < stackTrace.length; ++i) { 27 | var script = debuggerModel && debuggerModel.scriptForId(stackTrace[i].scriptId); 28 | var blackboxed = script ? 29 | WebInspector.BlackboxSupport.isBlackboxed(script.sourceURL, script.isContentScript()) : 30 | WebInspector.BlackboxSupport.isBlackboxedURL(stackTrace[i].url); 31 | if (!blackboxed) 32 | return stackTrace[i]; 33 | } 34 | return null; 35 | } 36 | 37 | var callFrame = innerCallFrameAnchorFromStackTrace(stackTrace); 38 | if (callFrame) 39 | return callFrame; 40 | 41 | while (asyncStackTrace) { 42 | callFrame = innerCallFrameAnchorFromStackTrace(asyncStackTrace.callFrames); 43 | if (callFrame) 44 | return callFrame; 45 | asyncStackTrace = asyncStackTrace.asyncStackTrace; 46 | } 47 | 48 | return stackTrace ? stackTrace[0] : null; 49 | } 50 | -------------------------------------------------------------------------------- /src/dt/components/Reload.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | WebInspector.reload = function() 6 | { 7 | if (WebInspector.dockController.canDock() && WebInspector.dockController.dockSide() === WebInspector.DockController.State.Undocked) 8 | InspectorFrontendHost.setIsDocked(true, function() {}); 9 | window.location.reload(); 10 | } 11 | -------------------------------------------------------------------------------- /src/dt/components/customPreviewSection.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .custom-expandable-section { 8 | display: inline-flex; 9 | flex-direction: column; 10 | } 11 | 12 | .custom-expandable-section-header::before { 13 | -webkit-user-select: none; 14 | background-image: url(Images/toolbarButtonGlyphs.png); 15 | background-size: 352px 168px; 16 | opacity: 0.5; 17 | content: "a"; 18 | width: 8px; 19 | margin-right: 4px; 20 | padding-right: 2px; 21 | color: transparent; 22 | text-shadow: none; 23 | } 24 | 25 | @media (-webkit-min-device-pixel-ratio: 1.5) { 26 | .custom-expandable-section-header::before { 27 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 28 | } 29 | } /* media */ 30 | 31 | 32 | .custom-expandable-section-header::before { 33 | background-position: -4px -96px; 34 | } 35 | 36 | .custom-expandable-section-header.expanded::before { 37 | background-position: -20px -96px; 38 | } 39 | 40 | .custom-expandable-section-standard-section { 41 | display: inline-flex; 42 | } -------------------------------------------------------------------------------- /src/dt/components/domUtils.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | display: inline; 9 | } 10 | 11 | .node-link { 12 | text-decoration: underline; 13 | cursor: pointer; 14 | display: inline; 15 | } 16 | 17 | .stack-preview-async-description { 18 | padding: 3px 0 1px; 19 | font-style: italic; 20 | } 21 | 22 | .stack-preview-container .webkit-html-blackbox-link { 23 | opacity: 0.6; 24 | } 25 | 26 | .stack-preview-container > tr { 27 | height: 17px; 28 | } 29 | -------------------------------------------------------------------------------- /src/dt/components/eventListenersView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .event-listener-tree li { 8 | padding: 2px 0 0 5px; 9 | } 10 | 11 | .event-listener-tree > li { 12 | border-top: 1px solid #f0f0f0; 13 | } 14 | 15 | .event-listener-tree > li:first-of-type { 16 | border-top: none; 17 | } 18 | 19 | .event-listener-tree { 20 | padding-left: 0 !important; 21 | padding-right: 3px; 22 | } 23 | 24 | .event-listener-tree li.parent::before { 25 | top: 0 !important; 26 | } 27 | 28 | .event-listener-tree .name { 29 | color: rgb(136, 19, 145); 30 | } 31 | 32 | .event-listener-tree-subtitle { 33 | float: right; 34 | } 35 | 36 | .event-listener-delete-button { 37 | padding: 0 3px; 38 | background-color: #f2f2f2; 39 | border-radius: 3px; 40 | border: 1px solid #c3c3c3; 41 | margin-left: 10px; 42 | display: none; 43 | } 44 | 45 | .event-listener-delete-button:hover { 46 | background-color: #e0e0e0; 47 | } 48 | 49 | .event-listener-tree li:hover .event-listener-delete-button { 50 | display: inline; 51 | } 52 | -------------------------------------------------------------------------------- /src/dt/components/inspectorViewTabbedPane.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .tabbed-pane-header { 8 | background-color: #f3f3f3; 9 | flex: 0 0 27px; 10 | overflow: visible; 11 | display: none; 12 | } 13 | 14 | .tabbed-pane-header-tab, 15 | .tabbed-pane-header-tab.selected { 16 | height: 26px; 17 | margin: 0; 18 | background: none; 19 | border: none; 20 | border-left: 2px solid transparent; 21 | border-right: 2px solid transparent; 22 | padding: 0 6px; 23 | } 24 | 25 | .tabbed-pane-header-tab.dragging { 26 | box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37); 27 | background: rgb(229, 229, 229); 28 | } 29 | 30 | .tabbed-pane-header-tab:hover { 31 | background: rgb(229, 229, 229); 32 | } 33 | 34 | .tabbed-pane-header-tab { 35 | color: #5a5a5a; 36 | } 37 | 38 | .tabbed-pane-header-tab.selected { 39 | color: #333; 40 | border-width: 0 2px 0 2px; 41 | } 42 | 43 | .tabbed-pane-header-contents { 44 | margin-left: 0; 45 | } 46 | -------------------------------------------------------------------------------- /src/dt/components/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "setting", 5 | "category": "Console", 6 | "title": "Enable custom formatters", 7 | "settingName": "customFormatters", 8 | "settingType": "boolean", 9 | "defaultValue": false 10 | }, 11 | { 12 | "type": "@WebInspector.DOMPresentationUtils.MarkerDecorator", 13 | "className": "WebInspector.DOMPresentationUtils.GenericDecorator", 14 | "marker": "breakpoint-marker", 15 | "title": "DOM Breakpoint", 16 | "color": "rgb(105, 140, 254)" 17 | }, 18 | { 19 | "type": "setting", 20 | "settingName": "networkConditionsCustomProfiles", 21 | "settingType": "array", 22 | "defaultValue": [] 23 | }, 24 | { 25 | "type": "settings-view", 26 | "name": "network-conditions", 27 | "title": "Throttling", 28 | "order": "35", 29 | "className": "WebInspector.NetworkConditionsSettingsTab", 30 | "settings": [ 31 | "networkConditionsCustomProfiles" 32 | ] 33 | } 34 | ], 35 | "dependencies": [ 36 | "bindings", 37 | "platform", 38 | "ui" 39 | ], 40 | "scripts": [ 41 | "BreakpointsSidebarPaneBase.js", 42 | "CustomPreviewSection.js", 43 | "DataSaverInfobar.js", 44 | "DebuggerPresentationUtils.js", 45 | "DOMBreakpointsSidebarPane.js", 46 | "DOMPresentationUtils.js", 47 | "DockController.js", 48 | "Drawer.js", 49 | "ExecutionContextSelector.js", 50 | "ExecutionContextModel.js", 51 | "HandlerRegistry.js", 52 | "InspectorView.js", 53 | "Linkifier.js", 54 | "NetworkConditionsSelector.js", 55 | "ObjectPopoverHelper.js", 56 | "ObjectPropertiesSection.js", 57 | "RemoteObjectPreviewFormatter.js", 58 | "ShortcutsScreen.js", 59 | "EventListenersUtils.js", 60 | "EventListenersView.js", 61 | "Reload.js" 62 | ], 63 | "resources": [ 64 | "breakpointsList.css", 65 | "customPreviewSection.css", 66 | "eventListenersView.css", 67 | "domUtils.css", 68 | "inspectorViewTabbedPane.css", 69 | "networkConditionsSettingsTab.css", 70 | "objectPropertiesSection.css", 71 | "objectValue.css" 72 | ] 73 | } 74 | -------------------------------------------------------------------------------- /src/dt/components/networkConditionsSettingsTab.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .network-conditions-settings-tab .settings-tab.help-content { 8 | display: flex; 9 | flex-direction: column; 10 | align-items: stretch; 11 | height: 100%; 12 | margin: 0; 13 | max-width: 500px; 14 | } 15 | 16 | .network-conditions-settings-tab .conditions-title { 17 | font-size: 120%; 18 | color: #222; 19 | flex: none; 20 | } 21 | 22 | .network-conditions-settings-tab .button-row { 23 | flex: none; 24 | display: flex; 25 | margin-bottom: 10px; 26 | } 27 | 28 | .network-conditions-settings-tab .button-row button { 29 | margin-right: 10px; 30 | min-width: 120px; 31 | flex: none; 32 | } 33 | 34 | .conditions-list-item { 35 | padding: 3px 5px 3px 5px; 36 | height: 30px; 37 | display: flex; 38 | align-items: center; 39 | position: relative; 40 | flex: auto 1 1; 41 | } 42 | 43 | .conditions-list-text { 44 | white-space: nowrap; 45 | text-overflow: ellipsis; 46 | flex: 0 0 70px; 47 | -webkit-user-select: none; 48 | color: #222; 49 | text-align: end; 50 | position: relative; 51 | } 52 | 53 | .conditions-list-title { 54 | text-align: start; 55 | flex: auto; 56 | display: flex; 57 | align-items: flex-start; 58 | } 59 | 60 | .conditions-list-title-text { 61 | overflow: hidden; 62 | flex: auto; 63 | white-space: nowrap; 64 | text-overflow: ellipsis; 65 | } 66 | 67 | .conditions-list-separator { 68 | flex: 0 0 1px; 69 | background-color: rgb(231, 231, 231); 70 | height: 30px; 71 | margin: 0 4px; 72 | } 73 | 74 | .conditions-list-separator-invisible { 75 | visibility: hidden; 76 | height: 100% !important; 77 | } 78 | 79 | .conditions-edit-row { 80 | flex: none; 81 | display: flex; 82 | flex-direction: row; 83 | margin: 6px 5px; 84 | } 85 | 86 | .conditions-edit-row input { 87 | width: 100%; 88 | text-align: inherit; 89 | } 90 | 91 | .conditions-edit-optional { 92 | position: absolute; 93 | bottom: -20px; 94 | right: 0; 95 | color: rgb(128, 128, 128); 96 | } 97 | -------------------------------------------------------------------------------- /src/dt/components/objectPropertiesSection.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .object-properties-section .name { 8 | color: rgb(136, 19, 145); 9 | flex-shrink: 0; 10 | } 11 | 12 | .object-properties-section-separator { 13 | flex-shrink: 0; 14 | } 15 | 16 | .object-properties-section-dimmed { 17 | opacity: 0.6; 18 | } 19 | 20 | .object-properties-section { 21 | padding: 0 0 0px 0px; 22 | color: rgb(33,33,33) !important; 23 | } 24 | 25 | .object-properties-section li { 26 | min-height: inherit; 27 | line-height: 12px; 28 | -webkit-user-select: text; 29 | } 30 | 31 | .object-properties-section li::before { 32 | top: -1px; 33 | } 34 | 35 | .object-properties-section li.editing-sub-part { 36 | padding: 3px 6px 8px; 37 | margin: -1px -6px -8px -6px; 38 | text-overflow: clip; 39 | } 40 | 41 | .object-properties-section li.editing { 42 | margin-left: 10px; 43 | text-overflow: clip; 44 | } 45 | 46 | .tree-outline ol.title-less-mode { 47 | padding-left: 0px; 48 | } 49 | 50 | .object-properties-section .synthetic-property { 51 | font-style: italic; 52 | } 53 | -------------------------------------------------------------------------------- /src/dt/components_lazy/filmStripDialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | flex: none !important; 9 | } 10 | 11 | .filmstrip-dialog { 12 | margin: 12px; 13 | } 14 | 15 | .filmstrip-dialog > img { 16 | border: 1px solid #ddd; 17 | } 18 | 19 | .filmstrip-dialog-footer { 20 | display: flex; 21 | align-items: center; 22 | margin-top: 10px; 23 | } 24 | 25 | .filmstrip-dialog-label { 26 | margin: 8px 8px; 27 | } 28 | -------------------------------------------------------------------------------- /src/dt/components_lazy/filmStripView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .film-strip-view { 8 | overflow-x: auto; 9 | overflow-y: hidden; 10 | align-content: flex-start; 11 | min-height: 81px; 12 | } 13 | 14 | .film-strip-view.time-based .frame .time { 15 | display: none; 16 | } 17 | 18 | .film-strip-view .label { 19 | margin: auto; 20 | font-size: 18px; 21 | color: #999; 22 | } 23 | 24 | .film-strip-view .frame { 25 | display: flex; 26 | flex-direction: column; 27 | align-items: center; 28 | padding: 4px; 29 | flex: none; 30 | cursor: pointer; 31 | } 32 | 33 | .film-strip-view .frame-limit-reached { 34 | font-size: 24px; 35 | color: #888; 36 | justify-content: center; 37 | display: inline-flex; 38 | flex-direction: column; 39 | flex: none; 40 | } 41 | 42 | .film-strip-view .frame .thumbnail { 43 | min-width: 24px; 44 | display: flex; 45 | flex-direction: row; 46 | align-items: center; 47 | pointer-events: none; 48 | margin: 4px 0 2px; 49 | border: 2px solid transparent; 50 | } 51 | 52 | .film-strip-view .frame:hover .thumbnail { 53 | border-color: #FBCA46; 54 | } 55 | 56 | .film-strip-view .frame .thumbnail img { 57 | height: auto; 58 | width: auto; 59 | max-width: 80px; 60 | max-height: 50px; 61 | pointer-events: none; 62 | box-shadow: 0 0 3px #bbb; 63 | flex: 0 0 auto; 64 | } 65 | 66 | .film-strip-view .frame:hover .thumbnail img { 67 | box-shadow: none; 68 | } 69 | 70 | .film-strip-view .frame .time { 71 | font-size: 10px; 72 | margin-top: 2px; 73 | } 74 | -------------------------------------------------------------------------------- /src/dt/components_lazy/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "sdk", 4 | "ui", 5 | "ui_lazy" 6 | ], 7 | "scripts": [ 8 | "CookiesTable.js", 9 | "FilmStripModel.js", 10 | "FilmStripView.js" 11 | ], 12 | "resources": [ 13 | "filmStripDialog.css", 14 | "filmStripView.css" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /src/dt/devices/DevicesDialog.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | */ 8 | WebInspector.DevicesDialog = function() 9 | { 10 | } 11 | 12 | /** 13 | * @constructor 14 | * @implements {WebInspector.ActionDelegate} 15 | */ 16 | WebInspector.DevicesDialog.ActionDelegate = function() 17 | { 18 | /** @type {?WebInspector.DevicesView} */ 19 | this._view = null; 20 | } 21 | 22 | WebInspector.DevicesDialog.ActionDelegate.prototype = { 23 | /** 24 | * @override 25 | * @param {!WebInspector.Context} context 26 | * @param {string} actionId 27 | * @return {boolean} 28 | */ 29 | handleAction: function(context, actionId) 30 | { 31 | if (actionId === "devices.dialog.show") { 32 | if (!this._view) 33 | this._view = new WebInspector.DevicesView(); 34 | 35 | var dialog = new WebInspector.Dialog(); 36 | dialog.addCloseButton(); 37 | this._view.show(dialog.element); 38 | dialog.setMaxSize(new Size(800, 600)); 39 | dialog.show(); 40 | return true; 41 | } 42 | return false; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/dt/devices/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.ActionDelegate", 5 | "actionId": "devices.dialog.show", 6 | "className": "WebInspector.DevicesDialog.ActionDelegate", 7 | "title": "Inspect devices\u2026" 8 | }, 9 | { 10 | "type": "context-menu-item", 11 | "location": "mainMenu/tools/open", 12 | "order": 50, 13 | "actionId": "devices.dialog.show" 14 | } 15 | ], 16 | "dependencies": ["platform", "ui", "host", "components"], 17 | "experiment": "inspectDevicesDialog", 18 | "scripts": [ 19 | "DevicesView.js", 20 | "DevicesDialog.js" 21 | ], 22 | "resources": [ 23 | "devicesView.css" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /src/dt/diff/Diff.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | WebInspector.Diff = { 6 | /** 7 | * @param {string} text1 8 | * @param {string} text2 9 | * @return {!Array.} 10 | */ 11 | charDiff: function(text1, text2) 12 | { 13 | var differ = new diff_match_patch(); 14 | return differ.diff_main(text1, text2); 15 | }, 16 | 17 | /** 18 | * @param {!Array.} lines1 19 | * @param {!Array.} lines2 20 | * @return {!Array.} 21 | */ 22 | lineDiff: function(lines1, lines2) 23 | { 24 | var lineToChar = new Map(); 25 | var charCode = 33; 26 | var text1 = encode(lines1); 27 | var text2 = encode(lines2); 28 | 29 | return WebInspector.Diff.charDiff(text1, text2); 30 | 31 | /** 32 | * @param {!Array.} lines 33 | * @return {string} 34 | */ 35 | function encode(lines) 36 | { 37 | var text = ""; 38 | for (var i = 0; i < lines.length; ++i) { 39 | var line = lines[i]; 40 | var character = lineToChar.get(line); 41 | if (!character) { 42 | character = String.fromCharCode(charCode++); 43 | lineToChar.set(line, character); 44 | } 45 | text += character; 46 | } 47 | return text; 48 | } 49 | }, 50 | } 51 | 52 | WebInspector.Diff.Operation = { 53 | Equal: 0, 54 | Insert: 1, 55 | Delete: -1 56 | } 57 | -------------------------------------------------------------------------------- /src/dt/diff/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "common" 4 | ], 5 | "scripts": [ 6 | "Diff.js", 7 | "diff_match_patch.js" 8 | ], 9 | "skip_compilation": [ 10 | "diff_match_patch.js" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/dt/elements/ElementsSidebarView.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.SidebarPane} 8 | * @param {string} title 9 | * @param {!WebInspector.Widget} widget 10 | */ 11 | WebInspector.ElementsSidebarViewWrapperPane = function(title, widget) 12 | { 13 | WebInspector.SidebarPane.call(this, title); 14 | widget.show(this.element); 15 | } 16 | 17 | WebInspector.ElementsSidebarViewWrapperPane.prototype = { 18 | __proto__: WebInspector.SidebarPane.prototype 19 | } 20 | -------------------------------------------------------------------------------- /src/dt/elements/breadcrumbs.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .crumbs { 8 | display: inline-block; 9 | pointer-events: auto; 10 | cursor: default; 11 | font-size: 11px; 12 | line-height: 17px; 13 | white-space: nowrap; 14 | } 15 | 16 | .crumbs .crumb { 17 | display: inline-block; 18 | padding: 0 7px; 19 | height: 18px; 20 | white-space: nowrap; 21 | } 22 | 23 | .crumbs .crumb.collapsed > * { 24 | display: none; 25 | } 26 | 27 | .crumbs .crumb.collapsed::before { 28 | content: "\2026"; 29 | font-weight: bold; 30 | } 31 | 32 | .crumbs .crumb.compact .extra { 33 | display: none; 34 | } 35 | 36 | .crumbs .crumb.selected, .crumbs .crumb.selected:hover { 37 | background-color: rgb(56, 121, 217); 38 | color: white; 39 | text-shadow: rgba(255, 255, 255, 0.5) 0 0 0; 40 | } 41 | 42 | .crumbs .crumb:hover { 43 | background-color: rgb(216, 216, 216); 44 | } 45 | -------------------------------------------------------------------------------- /src/dt/elements/computedStyleSidebarPane.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .computed-properties { 8 | -webkit-user-select: text; 9 | } 10 | 11 | .computed-style-property { 12 | display: flex; 13 | flex-wrap: wrap; 14 | } 15 | 16 | .computed-style-property .property-name { 17 | width: 16em; 18 | text-overflow: ellipsis; 19 | overflow: hidden; 20 | } 21 | 22 | .computed-style-property .property-value { 23 | min-width: 5em; 24 | } 25 | 26 | .computed-style-property-inherited { 27 | opacity: 0.5; 28 | } 29 | 30 | .trace-link { 31 | float: right; 32 | padding-left: 1em; 33 | position: relative; 34 | z-index: 1; 35 | } 36 | 37 | .trace-link a::before { 38 | content: attr(data-uncopyable); 39 | text-decoration: underline; 40 | } 41 | 42 | .property-trace { 43 | text-overflow: ellipsis; 44 | overflow: hidden; 45 | flex-grow: 1; 46 | } 47 | 48 | .property-trace-selector { 49 | color: gray; 50 | padding-left: 2em; 51 | } 52 | 53 | .property-trace-value { 54 | position: relative; 55 | display: inline-block; 56 | } 57 | 58 | .property-trace-inactive .property-trace-value::before { 59 | position: absolute; 60 | content: "."; 61 | border-bottom: 1px solid rgba(0, 0, 0, 0.35); 62 | top: 0; 63 | bottom: 5px; 64 | left: 0; 65 | right: 0; 66 | } 67 | 68 | .tree-outline li.odd-row { 69 | position: relative; 70 | background-color: #F5F5F5; 71 | } 72 | 73 | .tree-outline, .tree-outline ol { 74 | padding-left: 0; 75 | } 76 | 77 | .tree-outline li:hover { 78 | background-color: rgb(235, 242, 252); 79 | cursor: pointer; 80 | } 81 | 82 | /* FIXME: Patch TreeElement styles to use flex for title layout. */ 83 | 84 | .tree-outline li { 85 | display: flex; 86 | align-items: baseline; 87 | } 88 | 89 | .tree-outline li::before { 90 | float: none; 91 | flex: none; 92 | -webkit-mask-position: -3px -97px; 93 | background-color: rgb(110, 110, 110); 94 | margin-left: 4px; 95 | } 96 | 97 | .tree-outline li.parent.expanded::before { 98 | -webkit-mask-position: -19px -97px; 99 | } 100 | -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-horizontal-default-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-horizontal-default-1x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-horizontal-default-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-horizontal-default-2x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-horizontal-keyboard-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-horizontal-keyboard-1x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-horizontal-keyboard-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-horizontal-keyboard-2x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-horizontal-navigation-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-horizontal-navigation-1x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-horizontal-navigation-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-horizontal-navigation-2x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-vertical-default-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-vertical-default-1x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-vertical-default-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-vertical-default-2x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-vertical-keyboard-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-vertical-keyboard-1x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-vertical-keyboard-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-vertical-keyboard-2x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-vertical-navigation-1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-vertical-navigation-1x.png -------------------------------------------------------------------------------- /src/dt/emulated_devices/google-nexus-5-vertical-navigation-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdzwinel/betwixt/bdb62fa92be792aae8edc679cbb014871aa614ec/src/dt/emulated_devices/google-nexus-5-vertical-navigation-2x.png -------------------------------------------------------------------------------- /src/dt/emulation/DeviceModeButton.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @implements {WebInspector.ToolbarItem.Provider} 8 | */ 9 | WebInspector.DeviceModeButtonProvider = function() 10 | { 11 | var button = WebInspector.ToolbarButton.createActionButton("emulation.toggle-device-mode"); 12 | WebInspector.overridesSupport.addEventListener(WebInspector.OverridesSupport.Events.EmulationStateChanged, emulationEnabledChanged); 13 | WebInspector.overridesSupport.addEventListener(WebInspector.OverridesSupport.Events.OverridesWarningUpdated, updateWarning); 14 | 15 | emulationEnabledChanged(); 16 | updateWarning(); 17 | 18 | function emulationEnabledChanged() 19 | { 20 | button.setToggled(WebInspector.overridesSupport.emulationEnabled()); 21 | } 22 | 23 | function updateWarning() 24 | { 25 | var message = WebInspector.overridesSupport.warningMessage(); 26 | button.setTitle(message || WebInspector.UIString("Toggle device mode")); 27 | button.element.classList.toggle("warning", !!message); 28 | } 29 | 30 | this._button = button; 31 | } 32 | 33 | WebInspector.DeviceModeButtonProvider.prototype = { 34 | /** 35 | * @override 36 | * @return {?WebInspector.ToolbarItem} 37 | */ 38 | item: function() 39 | { 40 | return this._button; 41 | } 42 | } 43 | 44 | /** 45 | * @constructor 46 | * @implements {WebInspector.ActionDelegate} 47 | */ 48 | WebInspector.ToggleDeviceModeActionDelegate = function() 49 | { 50 | } 51 | 52 | WebInspector.ToggleDeviceModeActionDelegate.prototype = { 53 | /** 54 | * @override 55 | * @param {!WebInspector.Context} context 56 | * @param {string} actionId 57 | * @return {boolean} 58 | */ 59 | handleAction: function(context, actionId) 60 | { 61 | WebInspector.overridesSupport.setEmulationEnabled(!WebInspector.overridesSupport.emulationEnabled()); 62 | return true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/dt/emulation/devicesSettingsTab.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .devices-settings-tab .settings-tab.help-content { 8 | display: flex; 9 | flex-direction: column; 10 | align-items: flex-start; 11 | height: 100%; 12 | margin: 0; 13 | } 14 | 15 | .devices-settings-tab .devices-title { 16 | font-size: 120%; 17 | color: #222; 18 | flex: none; 19 | } 20 | 21 | .devices-settings-tab .devices-button-row { 22 | flex: none; 23 | display: flex; 24 | } 25 | 26 | .devices-settings-tab .devices-button-row button { 27 | margin-right: 10px; 28 | min-width: 120px; 29 | flex: none; 30 | } 31 | 32 | .devices-settings-tab .devices-list { 33 | width: 350px; 34 | margin-top: 10px; 35 | } 36 | 37 | .devices-list-item { 38 | padding: 3px 5px 3px 5px; 39 | height: 30px; 40 | display: flex; 41 | align-items: center; 42 | flex: auto 1 1; 43 | cursor: pointer; 44 | } 45 | 46 | .devices-list-checkbox { 47 | height: 12px; 48 | width: 12px; 49 | margin: 3px 5px 2px 2px; 50 | flex: none; 51 | pointer-events: none; 52 | } 53 | 54 | .devices-list-title { 55 | overflow: hidden; 56 | white-space: nowrap; 57 | text-overflow: ellipsis; 58 | flex: auto; 59 | -webkit-user-select: none; 60 | color: #aaa; 61 | } 62 | 63 | .device-list-item-show .devices-list-title { 64 | color: #222; 65 | } 66 | 67 | .devices-edit-fields { 68 | flex: auto; 69 | display: flex; 70 | flex-direction: column; 71 | align-items: stretch; 72 | margin-bottom: 5px; 73 | } 74 | 75 | .devices-edit-fields input { 76 | flex: auto; 77 | margin: 8px 5px 0 5px; 78 | height: 22px; 79 | border: 1px solid rgb(213, 213, 213); 80 | border-radius: 2px; 81 | color: #444444; 82 | padding: 3px; 83 | } 84 | 85 | .devices-edit-fields input.device-edit-small { 86 | flex: 0 0 80px; 87 | } 88 | -------------------------------------------------------------------------------- /src/dt/extensions/ExtensionRegistryStub.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 Google Inc. All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are 6 | * met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above 11 | * copyright notice, this list of conditions and the following disclaimer 12 | * in the documentation and/or other materials provided with the 13 | * distribution. 14 | * * Neither the name of Google Inc. nor the names of its 15 | * contributors may be used to endorse or promote products derived from 16 | * this software without specific prior written permission. 17 | * 18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | */ 30 | 31 | if (!window.InspectorExtensionRegistry) { 32 | 33 | /** 34 | * @constructor 35 | */ 36 | WebInspector.InspectorExtensionRegistryStub = function() 37 | { 38 | } 39 | 40 | WebInspector.InspectorExtensionRegistryStub.prototype = { 41 | getExtensionsAsync: function() 42 | { 43 | } 44 | } 45 | 46 | var InspectorExtensionRegistry = new WebInspector.InspectorExtensionRegistryStub(); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/dt/extensions/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "components" 4 | ], 5 | "scripts": [ 6 | "ExtensionAPI.js", 7 | "ExtensionAuditCategory.js", 8 | "ExtensionRegistryStub.js", 9 | "ExtensionServer.js", 10 | "ExtensionPanel.js", 11 | "ExtensionView.js" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/dt/heap_snapshot_worker/HeapSnapshotWorker.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2011 Google Inc. All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are 6 | * met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above 11 | * copyright notice, this list of conditions and the following disclaimer 12 | * in the documentation and/or other materials provided with the 13 | * distribution. 14 | * * Neither the name of Google Inc. nor the names of its 15 | * contributors may be used to endorse or promote products derived from 16 | * this software without specific prior written permission. 17 | * 18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | */ 30 | 31 | function postMessageWrapper(message) 32 | { 33 | postMessage(message); 34 | } 35 | 36 | var dispatcher = new WebInspector.HeapSnapshotWorkerDispatcher(this, postMessageWrapper); 37 | 38 | /** 39 | * @param {function(!Event)} listener 40 | * @suppressGlobalPropertiesCheck 41 | */ 42 | function installMessageEventListener(listener) 43 | { 44 | self.addEventListener("message", listener, false); 45 | } 46 | 47 | installMessageEventListener(dispatcher.dispatchMessage.bind(dispatcher)); 48 | -------------------------------------------------------------------------------- /src/dt/heap_snapshot_worker/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": [ 3 | "../platform/utilities.js", 4 | "../common/WebInspector.js", 5 | "../common/UIString.js", 6 | "../common/TextUtils.js", 7 | "../profiler/HeapSnapshotCommon.js", 8 | "AllocationProfile.js", 9 | "HeapSnapshot.js", 10 | "HeapSnapshotLoader.js", 11 | "HeapSnapshotWorkerDispatcher.js", 12 | "JSHeapSnapshot.js", 13 | "HeapSnapshotWorker.js" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /src/dt/host/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "common", 4 | "platform" 5 | ], 6 | "scripts": [ 7 | "InspectorFrontendHostAPI.js", 8 | "InspectorFrontendHost.js", 9 | "Platform.js", 10 | "ResourceLoader.js", 11 | "UserMetrics.js" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/dt/inspector.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | @import url("inspectorStyle.css"); 8 | @import url("popover.css"); 9 | @import url("sidebarPane.css"); 10 | -------------------------------------------------------------------------------- /src/dt/inspector.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/dt/inspector.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | Runtime.startApplication("inspector"); 6 | -------------------------------------------------------------------------------- /src/dt/inspector.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "name": "platform", "type": "autostart" }, 3 | { "name": "main", "type": "autostart" }, 4 | { "name": "components", "type": "autostart" }, 5 | { "name": "ui", "type": "autostart" }, 6 | { "name": "sdk", "type": "autostart" }, 7 | { "name": "host", "type": "autostart" }, 8 | { "name": "common", "type": "autostart" }, 9 | { "name": "emulation", "type": "autostart" }, 10 | { "name": "workspace", "type": "autostart" }, 11 | { "name": "bindings", "type": "autostart" }, 12 | { "name": "extensions", "type": "autostart" }, 13 | { "name": "ui_lazy" }, 14 | { "name": "components_lazy" }, 15 | { "name": "network" }, 16 | { "name": "source_frame" } 17 | ] 18 | -------------------------------------------------------------------------------- /src/dt/layers/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.PanelFactory", 5 | "name": "layers", 6 | "title": "Layers", 7 | "order": 100, 8 | "className": "WebInspector.LayersPanelFactory" 9 | }, 10 | { 11 | "type": "@WebInspector.Revealer", 12 | "contextTypes": ["WebInspector.DeferredLayerTree"], 13 | "className": "WebInspector.LayersPanel.LayerTreeRevealer" 14 | } 15 | ], 16 | "dependencies": ["timeline"], 17 | "experiment": "layersPanel", 18 | "scripts": [ 19 | "LayerPaintProfilerView.js", 20 | "LayersPanel.js" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/dt/main/OverlayController.js: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | */ 8 | WebInspector.OverlayController = function() 9 | { 10 | WebInspector.moduleSetting("disablePausedStateOverlay").addChangeListener(this._updateOverlayMessage, this); 11 | WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPaused, this._updateOverlayMessage, this); 12 | WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._updateOverlayMessage, this); 13 | WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._updateOverlayMessage, this); 14 | } 15 | 16 | WebInspector.OverlayController.prototype = { 17 | 18 | /** 19 | * @param {!WebInspector.Event} event 20 | */ 21 | _updateOverlayMessage: function(event) 22 | { 23 | var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target); 24 | var message = debuggerModel.isPaused() && !WebInspector.moduleSetting("disablePausedStateOverlay").get() ? WebInspector.UIString("Paused in debugger") : undefined; 25 | debuggerModel.target().pageAgent().setOverlayMessage(message); 26 | } 27 | } -------------------------------------------------------------------------------- /src/dt/main/SimpleApp.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @implements {WebInspector.App} 8 | */ 9 | WebInspector.SimpleApp = function() 10 | { 11 | }; 12 | 13 | WebInspector.SimpleApp.prototype = { 14 | /** 15 | * @override 16 | * @param {!Document} document 17 | * @param {function()} callback 18 | */ 19 | presentUI: function(document, callback) 20 | { 21 | var rootView = new WebInspector.RootView(); 22 | WebInspector.inspectorView.show(rootView.element); 23 | WebInspector.inspectorView.showInitialPanel(); 24 | rootView.attachToDocument(document); 25 | callback(); 26 | } 27 | }; 28 | 29 | /** 30 | * @constructor 31 | * @implements {WebInspector.AppProvider} 32 | */ 33 | WebInspector.SimpleAppProvider = function() 34 | { 35 | }; 36 | 37 | WebInspector.SimpleAppProvider.prototype = { 38 | /** 39 | * @override 40 | * @return {!WebInspector.App} 41 | */ 42 | createApp: function() 43 | { 44 | return new WebInspector.SimpleApp(); 45 | } 46 | }; 47 | -------------------------------------------------------------------------------- /src/dt/main/remoteDebuggingTerminatedScreen.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .widget { 8 | padding: 25px; 9 | } 10 | 11 | .message { 12 | font-size: larger; 13 | white-space: pre; 14 | margin: 5px; 15 | } 16 | 17 | .reason { 18 | color: #8b0000; 19 | } 20 | -------------------------------------------------------------------------------- /src/dt/main/renderingOptions.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | label { 8 | margin: 12px 0 0 0; 9 | padding: 0 4px 0 12px; 10 | } 11 | -------------------------------------------------------------------------------- /src/dt/main/targetCrashedScreen.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .widget { 8 | padding: 25px; 9 | } 10 | 11 | .message { 12 | font-size: larger; 13 | white-space: pre; 14 | margin: 5px; 15 | } 16 | -------------------------------------------------------------------------------- /src/dt/network/blockedURLsPane.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .blocked-urls-pane { 8 | overflow: hidden; 9 | } 10 | 11 | .toolbar { 12 | border-bottom: 1px solid #dadada; 13 | } 14 | 15 | .no-blocked-urls, .blocked-urls-list { 16 | font-size: 11px; 17 | overflow-x: hidden; 18 | overflow-y: auto; 19 | } 20 | 21 | .no-blocked-urls { 22 | display: flex; 23 | justify-content: center; 24 | padding: 3px; 25 | } 26 | 27 | .no-blocked-urls > span { 28 | white-space: pre; 29 | } 30 | 31 | .blocked-url { 32 | flex: none; 33 | display: flex; 34 | align-items: center; 35 | padding: 3px 10px 3px 9px; 36 | position: relative; 37 | } 38 | 39 | .blocked-url:not(.blocked-url-editing):hover { 40 | background-color: #dadada; 41 | } 42 | 43 | .blocked-url .blocked-count { 44 | flex: 30px 0 0; 45 | font-size: smaller !important; 46 | padding-right: 5px; 47 | } 48 | 49 | .blocked-url > input { 50 | position: absolute; 51 | left: 6px; 52 | right: 6px; 53 | top: 0; 54 | bottom: 0; 55 | width: calc(100% - 12px); 56 | } 57 | 58 | .blocked-url-text { 59 | white-space: nowrap; 60 | text-overflow: ellipsis; 61 | overflow: hidden; 62 | flex: auto; 63 | margin-right: 5px; 64 | } 65 | 66 | .blocked-url .remove-button { 67 | width: 13px; 68 | height: 13px; 69 | background-image: url(Images/toolbarButtonGlyphs.png); 70 | background-size: 352px 168px; 71 | background-position: -175px -96px; 72 | visibility: hidden; 73 | flex: none; 74 | opacity: 0.7; 75 | cursor: default; 76 | } 77 | 78 | @media (-webkit-min-device-pixel-ratio: 1.5) { 79 | .blocked-url .remove-button { 80 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 81 | } 82 | } /* media */ 83 | 84 | .blocked-url:hover .remove-button { 85 | visibility: visible; 86 | } 87 | 88 | .blocked-url .remove-button:hover { 89 | opacity: 1.0; 90 | } -------------------------------------------------------------------------------- /src/dt/network/eventSourceMessagesView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .event-source-messages-view .data-grid { 8 | flex: auto; 9 | border: none; 10 | } 11 | -------------------------------------------------------------------------------- /src/dt/network/networkConfigView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .network-config { 8 | padding: 12px; 9 | } 10 | 11 | .network-config-group { 12 | display: flex; 13 | margin-bottom: 12px; 14 | flex-wrap: wrap; 15 | flex: 0 0 auto; 16 | min-height: 30px; 17 | } 18 | 19 | .network-config-title { 20 | flex: 0 0 130px; 21 | margin-right: 17px; 22 | color: hsla(0,0%,40%,1); 23 | } 24 | 25 | .network-config-fields { 26 | flex: 1 0 200px; 27 | } 28 | 29 | /* Disable cache */ 30 | 31 | .network-config-disable-cache { 32 | line-height: 28px; 33 | } 34 | 35 | /* Network throttling */ 36 | 37 | .network-config-throttling .chrome-select { 38 | width: 100%; 39 | max-width: 250px; 40 | } 41 | 42 | .network-config-throttling > .network-config-title { 43 | line-height: 24px; 44 | } 45 | 46 | /* User agent */ 47 | 48 | .network-config-ua > .network-config-title { 49 | line-height: 20px; 50 | } 51 | 52 | .network-config-ua label[is="dt-radio"].checked > * { 53 | display: none 54 | } 55 | 56 | .network-config-ua input:not(.dt-radio-button) { 57 | display: block; 58 | width: calc(100% - 20px); 59 | max-width: 400px; 60 | border: 1px solid #bfbfbf; 61 | border-radius: 2px; 62 | box-sizing: border-box; 63 | color: #444; 64 | font: inherit; 65 | border-width: 1px; 66 | min-height: 2em; 67 | padding: 3px; 68 | } 69 | 70 | .network-config-ua input[readonly] { 71 | background-color: rgb(235, 235, 228); 72 | } 73 | 74 | .network-config-ua input[type=text], .network-config-ua .chrome-select { 75 | margin: 5px 0 5px 20px; 76 | } 77 | 78 | .network-config-ua .chrome-select { 79 | width: calc(100% - 20px); 80 | max-width: 230px; 81 | } 82 | 83 | .network-config-ua label[is="dt-radio"] { 84 | display: block; 85 | } 86 | 87 | .network-config-ua-auto, .network-config-ua-custom { 88 | opacity: 0.5; 89 | } 90 | 91 | .network-config-ua-auto.checked, .network-config-ua-custom.checked { 92 | opacity: 1; 93 | } 94 | -------------------------------------------------------------------------------- /src/dt/network/requestCookiesView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .request-cookies-view { 8 | display: flex; 9 | overflow: auto; 10 | margin: 12px; 11 | height: 100%; 12 | } 13 | 14 | .request-cookies-view .data-grid { 15 | flex: auto; 16 | height: 100%; 17 | } 18 | 19 | .request-cookies-view .data-grid .row-group { 20 | font-weight: bold; 21 | font-size: 11px; 22 | } 23 | -------------------------------------------------------------------------------- /src/dt/network/webSocketFrameView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .websocket-frame-view { 8 | -webkit-user-select: text; 9 | } 10 | 11 | .websocket-frame-view .data-grid { 12 | flex: auto; 13 | border: none; 14 | } 15 | 16 | .websocket-frame-view .data-grid .data { 17 | background-image: none; 18 | } 19 | 20 | .websocket-frame-view-td { 21 | border-bottom: 1px solid #ccc; 22 | } 23 | 24 | .websocket-frame-view .data-grid tr.selected { 25 | background-color: #def; 26 | } 27 | 28 | .websocket-frame-view .data-grid td, 29 | .websocket-frame-view .data-grid th { 30 | border-left-color: #ccc; 31 | } 32 | 33 | .websocket-frame-view-row-outcoming { 34 | background-color: rgb(226, 247, 218); 35 | } 36 | 37 | .websocket-frame-view-row-opcode { 38 | background-color: rgb(255, 255, 232); 39 | color: rgb(170, 111, 71); 40 | } 41 | 42 | .websocket-frame-view-row-error { 43 | background-color: rgb(255, 237, 237); 44 | color: rgb(182, 0, 0); 45 | } 46 | -------------------------------------------------------------------------------- /src/dt/network/xmlView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .shadow-xml-view { 8 | -webkit-user-select: text; 9 | overflow: auto; 10 | padding: 2px 4px; 11 | } 12 | 13 | .shadow-xml-view ol { 14 | list-style: none; 15 | padding: 0; 16 | margin: 0; 17 | -webkit-padding-start: 16px;/* step width + arrow width */ 18 | } 19 | 20 | .shadow-xml-view > ol { 21 | -webkit-padding-start: 0; 22 | } 23 | 24 | .shadow-xml-view ol.children:not(.expanded) { 25 | display: none; 26 | } 27 | 28 | .shadow-xml-view li.parent::before { 29 | -webkit-user-select: none; 30 | -webkit-mask-image: url(Images/toolbarButtonGlyphs.png); 31 | -webkit-mask-size: 352px 168px; 32 | -webkit-mask-position: -4px -97px; 33 | background-color: rgb(110, 110, 110); 34 | content: " "; 35 | width: 10px;/* arrow width */ 36 | height: 10px; 37 | display: inline-block; 38 | position: relative; 39 | top: 2px; 40 | } 41 | 42 | .shadow-xml-view li.parent.expanded::before { 43 | -webkit-mask-position: -20px -97px; 44 | } 45 | 46 | @media (-webkit-min-device-pixel-ratio: 1.5) { 47 | .shadow-xml-view li.parent::before { 48 | -webkit-mask-image: url(Images/toolbarButtonGlyphs_2x.png); 49 | } 50 | } /* media */ 51 | 52 | .shadow-xml-view li:not(.parent) { 53 | margin-left: 10px; /* arrow width */ 54 | } 55 | 56 | .shadow-xml-view li.shadow-xml-view-close-tag { 57 | margin-left: -6px; /* step width */ 58 | } 59 | 60 | .shadow-xml-view-tag { 61 | color: rgb(136, 18, 128); 62 | } 63 | 64 | .shadow-xml-view-comment { 65 | color: rgb(35, 110, 37); 66 | } 67 | 68 | .shadow-xml-view-processing-instruction { 69 | color: rgb(35, 110, 37); 70 | } 71 | 72 | .shadow-xml-view-attribute-name { 73 | color: rgb(153, 69, 0); 74 | } 75 | 76 | .shadow-xml-view-attribute-value { 77 | color: rgb(26, 26, 166); 78 | } 79 | 80 | .shadow-xml-view-text { 81 | color: rgb(0, 0, 0); 82 | white-space: pre; 83 | } 84 | 85 | .shadow-xml-view-cdata { 86 | color: rgb(0, 0, 0); 87 | } 88 | -------------------------------------------------------------------------------- /src/dt/platform/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | ], 4 | "scripts": [ 5 | "utilities.js", 6 | "DOMExtension.js" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /src/dt/profiler/ProfileTypeRegistry.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | */ 8 | WebInspector.ProfileTypeRegistry = function() 9 | { 10 | this._profileTypes = []; 11 | 12 | this.cpuProfileType = new WebInspector.CPUProfileType(); 13 | this._addProfileType(this.cpuProfileType); 14 | this.heapSnapshotProfileType = new WebInspector.HeapSnapshotProfileType(); 15 | this._addProfileType(this.heapSnapshotProfileType); 16 | this.trackingHeapSnapshotProfileType = new WebInspector.TrackingHeapSnapshotProfileType(); 17 | this._addProfileType(this.trackingHeapSnapshotProfileType); 18 | } 19 | 20 | WebInspector.ProfileTypeRegistry.prototype = { 21 | /** 22 | * @param {!WebInspector.ProfileType} profileType 23 | */ 24 | _addProfileType: function(profileType) 25 | { 26 | this._profileTypes.push(profileType); 27 | }, 28 | 29 | /** 30 | * @return {!Array.} 31 | */ 32 | profileTypes: function() 33 | { 34 | return this._profileTypes; 35 | } 36 | } 37 | 38 | WebInspector.ProfileTypeRegistry.instance = new WebInspector.ProfileTypeRegistry(); 39 | -------------------------------------------------------------------------------- /src/dt/promises/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "drawer-view", 5 | "name": "promises", 6 | "title": "Promises", 7 | "order": 30, 8 | "persistence": "permanent", 9 | "className": "WebInspector.PromisePane" 10 | } 11 | ], 12 | "dependencies": ["components", "ui_lazy"], 13 | "experiment": "promiseTracker", 14 | "scripts": [ 15 | "PromisePane.js" 16 | ], 17 | "resources": [ 18 | "promisePane.css" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/dt/promises/promisePane.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .promises .data-grid { 8 | border: none; 9 | flex: 1 1; 10 | } 11 | 12 | .promises > .toolbar { 13 | border-bottom: 1px solid #dadada; 14 | } 15 | 16 | .promises .promise-gc { 17 | opacity: 0.6; 18 | } 19 | 20 | .promises .data-grid th:hover { 21 | background-color: inherit !important; 22 | } 23 | 24 | .promises .data-grid .odd { 25 | background-color: #eee; 26 | } 27 | 28 | .promises .data-grid .header-container { 29 | height: 30px; 30 | } 31 | 32 | .promises .data-grid .data-container { 33 | top: 29px; 34 | } 35 | 36 | .promises .data-grid table.data { 37 | background: transparent; 38 | } 39 | 40 | .promises .data-grid th { 41 | background-color: white; 42 | } 43 | 44 | .promises .data-grid td { 45 | line-height: 17px; 46 | height: 24px; 47 | vertical-align: middle; 48 | } 49 | 50 | .promises .data-grid th, 51 | .promises .data-grid td { 52 | border-bottom: 1px solid rgb(205, 205, 205); 53 | border-left: 1px solid rgb(205, 205, 205); 54 | } 55 | 56 | .promises .status { 57 | -webkit-mask-image: url(Images/toolbarButtonGlyphs.png); 58 | -webkit-mask-size: 352px 168px; 59 | -webkit-mask-position: -294px -26px; 60 | background-color: #bbb; 61 | height: 20px; 62 | width: 20px; 63 | } 64 | 65 | @media (-webkit-min-device-pixel-ratio: 1.5) { 66 | .promises .status { 67 | -webkit-mask-image: url(Images/toolbarButtonGlyphs_2x.png); 68 | } 69 | } /* media */ 70 | 71 | .promises .status.rejected { 72 | background-color: rgb(216, 0, 0); 73 | } 74 | 75 | .promises .status.resolved { 76 | background-color: #696; 77 | } 78 | 79 | .promises-filters-header { 80 | flex: 0 0 23px; 81 | overflow: hidden; 82 | } 83 | 84 | .promises-filter-status { 85 | flex: 0 0 23px; 86 | padding-left: 18px; 87 | color: rgb(128, 128, 128); 88 | font-style: italic; 89 | } 90 | .promises-filter-status .link:hover { 91 | color: rgb(15%, 15%, 15%); 92 | } 93 | .promises-filter-status .link { 94 | color: rgb(33%, 33%, 33%); 95 | } 96 | -------------------------------------------------------------------------------- /src/dt/resources/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.PanelFactory", 5 | "name": "resources", 6 | "title": "Resources", 7 | "order": 70, 8 | "className": "WebInspector.ResourcesPanelFactory" 9 | }, 10 | { 11 | "type": "@WebInspector.Revealer", 12 | "contextTypes": ["WebInspector.Resource"], 13 | "className": "WebInspector.ResourcesPanel.ResourceRevealer" 14 | } 15 | ], 16 | "dependencies": ["source_frame", "ui_lazy", "components_lazy"], 17 | "scripts": [ 18 | "ApplicationCacheItemsView.js", 19 | "CookieItemsView.js", 20 | "DatabaseModel.js", 21 | "DOMStorageModel.js", 22 | "DOMStorageItemsView.js", 23 | "DatabaseQueryView.js", 24 | "DatabaseTableView.js", 25 | "DirectoryContentView.js", 26 | "IndexedDBModel.js", 27 | "IndexedDBViews.js", 28 | "FileContentView.js", 29 | "FileSystemModel.js", 30 | "FileSystemView.js", 31 | "ResourcesPanel.js", 32 | "ServiceWorkerCacheViews.js", 33 | "ServiceWorkersView.js" 34 | ], 35 | "resources": [ 36 | "indexedDBViews.css", 37 | "resourcesPanel.css", 38 | "serviceWorkerCacheViews.css", 39 | "serviceWorkersView.css" 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /src/dt/resources/serviceWorkerCacheViews.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .service-worker-cache-data-view .data-view-toolbar { 8 | position: relative; 9 | background-color: #eee; 10 | border-bottom: 1px solid #ccc; 11 | } 12 | 13 | .service-worker-cache-data-view .data-view-toolbar .key-input { 14 | font-size: 11px; 15 | margin: auto 0; 16 | width: 200px; 17 | } 18 | 19 | .service-worker-cache-data-view .data-grid { 20 | flex: auto; 21 | } 22 | 23 | .service-worker-cache-data-view .data-grid .data-container tr:nth-child(even) { 24 | background-color: white; 25 | } 26 | 27 | .service-worker-cache-data-view .data-grid .data-container tr:nth-child(odd) { 28 | background-color: #EAF3FF; 29 | } 30 | 31 | .service-worker-cache-data-view .data-grid .data-container tr:nth-last-child(1) { 32 | background-color: white; 33 | } 34 | 35 | .service-worker-cache-data-view .data-grid .data-container tr:nth-last-child(1) td { 36 | border: 0; 37 | } 38 | 39 | .service-worker-cache-data-view .data-grid .data-container tr:nth-last-child(2) td { 40 | border-bottom: 1px solid #aaa; 41 | } 42 | 43 | .service-worker-cache-data-view .data-grid .data-container tr.selected { 44 | background-color: rgb(212, 212, 212); 45 | color: inherit; 46 | } 47 | 48 | .service-worker-cache-data-view .data-grid:focus .data-container tr.selected { 49 | background-color: rgb(56, 121, 217); 50 | color: white; 51 | } 52 | 53 | .service-worker-cache-data-view .section, 54 | .service-worker-cache-data-view .section > .header, 55 | .service-worker-cache-data-view .section > .header .title { 56 | margin: 0; 57 | min-height: inherit; 58 | line-height: inherit; 59 | } 60 | 61 | .service-worker-cache-data-view .primitive-value { 62 | padding-top: 1px; 63 | } 64 | 65 | .service-worker-cache-data-view .data-grid .data-container td .section .header .title { 66 | white-space: nowrap; 67 | text-overflow: ellipsis; 68 | overflow: hidden; 69 | } 70 | -------------------------------------------------------------------------------- /src/dt/screencast/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.AppProvider", 5 | "className": "WebInspector.ScreencastAppProvider", 6 | "order": 1 7 | }, 8 | { 9 | "type": "@WebInspector.ToolbarItem.Provider", 10 | "className": "WebInspector.ScreencastApp.ToolbarButtonProvider", 11 | "order": 1, 12 | "location": "main-toolbar-left" 13 | } 14 | ], 15 | "dependencies": [ 16 | "components" 17 | ], 18 | "scripts": [ 19 | "ScreencastApp.js", 20 | "ScreencastView.js" 21 | ], 22 | "resources": [ 23 | "screencastView.css" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /src/dt/script_formatter_worker/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": [ 3 | "../platform/utilities.js", 4 | "../cm/headlesscodemirror.js", 5 | "../cm/css.js", 6 | "../cm/xml.js", 7 | "../cm/htmlmixed.js", 8 | "ScriptFormatterWorker.js", 9 | "../acorn/acorn.js", 10 | "CSSFormatter.js", 11 | "ESTreeWalker.js", 12 | "AcornTokenizer.js", 13 | "JavaScriptFormatter.js" 14 | ], 15 | "skip_compilation": [ 16 | "../acorn/acorn.js", 17 | "../cm/headlesscodemirror.js", 18 | "../cm/css.js", 19 | "../cm/xml.js", 20 | "../cm/htmlmixed.js" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/dt/sdk/InspectorBackendHostedMode.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | //This should be executed immediately after InspectorBackend and InspectorBackendCommands 6 | InspectorBackend.loadFromJSONIfNeeded("./protocol.json"); -------------------------------------------------------------------------------- /src/dt/security/lockIcon.css: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 | * Use of this source code is governed by a BSD-style license that can be 3 | * found in the LICENSE file. 4 | */ 5 | 6 | .lock-icon, 7 | .security-property { 8 | background-size: cover; 9 | height: 16px; 10 | width: 16px; 11 | } 12 | 13 | .lock-icon-unknown { 14 | background-image: url(Images/securityStateNeutral.svg); 15 | } 16 | 17 | .lock-icon-neutral { 18 | background-image: url(Images/securityStateNeutral.svg); 19 | } 20 | 21 | .lock-icon-insecure { 22 | background-image: url(Images/securityStateInsecure.svg); 23 | } 24 | 25 | .lock-icon-secure { 26 | background-image: url(Images/securityStateSecure.svg); 27 | } 28 | 29 | .security-property-insecure { 30 | background-image: url(Images/securityPropertyInsecure.svg); 31 | } 32 | 33 | .security-property-neutral { 34 | background-image: url(Images/securityPropertyWarning.svg); 35 | } 36 | 37 | .security-property-warning { 38 | background-image: url(Images/securityPropertyWarning.svg); 39 | } 40 | 41 | .security-property-secure { 42 | background-image: url(Images/securityPropertySecure.svg); 43 | } 44 | 45 | .security-property-info { 46 | background-image: url(Images/securityPropertyInfo.svg); 47 | } 48 | -------------------------------------------------------------------------------- /src/dt/security/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.PanelFactory", 5 | "name": "security", 6 | "title": "Security", 7 | "order": 80, 8 | "className": "WebInspector.SecurityPanelFactory" 9 | } 10 | ], 11 | "dependencies": ["network", "platform", "ui", "sdk"], 12 | "experiment": "securityPanel", 13 | "scripts": [ 14 | "SecurityModel.js", 15 | "SecurityPanel.js" 16 | ], 17 | "resources": [ 18 | "lockIcon.css", 19 | "mainView.css", 20 | "originView.css", 21 | "sidebar.css" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /src/dt/security/originView.css: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 | * Use of this source code is governed by a BSD-style license that can be 3 | * found in the LICENSE file. 4 | */ 5 | 6 | .security-origin-view { 7 | overflow-x: hidden; 8 | overflow-y: scroll; 9 | display: block; 10 | -webkit-user-select: text; 11 | } 12 | 13 | .security-origin-view .origin-view-section { 14 | padding: 1.5em 1.5em 1.5em; 15 | border-bottom: 1px solid rgb(230, 230, 230); 16 | } 17 | 18 | .security-origin-view .title-section { 19 | padding-bottom: 1.5em; 20 | } 21 | 22 | .security-origin-view .origin-display .security-property { 23 | margin: -1px 2px 0px 0px; 24 | display: inline-block; 25 | vertical-align: middle; 26 | } 27 | 28 | .security-origin-view .origin-view-title { 29 | font-size: 1.25em; 30 | margin-top: 0.5em; 31 | margin-bottom: 0.25em; 32 | } 33 | 34 | .security-origin-view .origin-view-section-title { 35 | font-weight: bold; 36 | font-size: 1em; 37 | margin-bottom: 0.25em; 38 | } 39 | 40 | .security-origin-view .details-table-row { 41 | display: flex; 42 | white-space: nowrap; 43 | overflow: hidden; 44 | margin-top: 6px; 45 | } 46 | 47 | .security-origin-view .details-table-row > div { 48 | align-items: flex-start; 49 | } 50 | 51 | .security-origin-view .details-table-row > div:first-child { 52 | color: rgb(140, 140, 140); 53 | width: 7em; 54 | margin-right: 1em; 55 | flex: none; 56 | display: flex; 57 | justify-content: flex-end; 58 | } 59 | .security-origin-view .details-table-row > div:nth-child(2) { 60 | flex: auto; 61 | white-space: normal; 62 | } 63 | 64 | .security-origin-view .details-table .empty-san { 65 | color: rgb(140, 140, 140); 66 | } 67 | 68 | .security-origin-view .details-table .san-entry { 69 | display: block; 70 | } 71 | 72 | .security-origin-view .truncated-san .truncated-entry { 73 | display: none; 74 | } 75 | 76 | .security-certificate-button { 77 | margin-top: 4px; 78 | } 79 | -------------------------------------------------------------------------------- /src/dt/security/sidebar.css: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015 The Chromium Authors. All rights reserved. 2 | * Use of this source code is governed by a BSD-style license that can be 3 | * found in the LICENSE file. 4 | */ 5 | 6 | .tree-outline { 7 | padding: 0; 8 | } 9 | 10 | .tree-outline:focus li.selected .lock-icon-neutral { 11 | background-color: #fff; 12 | } 13 | 14 | .tree-outline .security-main-view-sidebar-tree-item { 15 | border-bottom: 1px solid rgb(230, 230, 230); 16 | padding-top: 0; 17 | } 18 | 19 | .tree-outline .security-main-view-sidebar-tree-item .icon, 20 | .tree-outline .security-main-view-sidebar-tree-item .titles { 21 | margin-top: 1.5em; 22 | margin-bottom: 1.5em; 23 | } 24 | 25 | .tree-outline .security-sidebar-origins { 26 | padding: 1px 8px 6px 8px; 27 | margin-top: 1em; 28 | margin-bottom: 0.5em; 29 | color: rgb(90, 90, 90); 30 | } 31 | 32 | .tree-outline ol { 33 | padding-left: 0; 34 | } 35 | 36 | .tree-outline li::before { 37 | content: none; 38 | } 39 | 40 | .tree-outline .security-main-view-sidebar-tree-item, 41 | .tree-outline .security-sidebar-origins, 42 | .tree-outline .sidebar-tree-section + .children > .sidebar-tree-item { 43 | padding-left: 16px; 44 | } 45 | 46 | .tree-outline .sidebar-tree-item .lock-icon, 47 | .tree-outline .sidebar-tree-item .security-property { 48 | float: left; 49 | margin-right: 2px; 50 | } 51 | 52 | .tree-outline .security-sidebar-tree-item.selected .icon:not(.security-property-unknown) { 53 | background-image: none; 54 | background-color: #fff; 55 | } 56 | 57 | .tree-outline li.selected .lock-icon-neutral { 58 | background-image: none; 59 | background-color: #5a5a5a; 60 | -webkit-mask-image: url(Images/securityStateNeutral.svg); 61 | -webkit-mask-size: cover; 62 | } 63 | 64 | .tree-outline .security-sidebar-tree-item.selected .security-property-insecure { 65 | -webkit-mask-image: url(Images/securityPropertyInsecure.svg); 66 | } 67 | 68 | .security-sidebar-tree-item.selected .security-property-neutral, 69 | .security-sidebar-tree-item.selected .security-property-warning { 70 | -webkit-mask-image: url(Images/securityPropertyWarning.svg); 71 | } 72 | 73 | .security-sidebar-tree-item.selected .security-property-secure { 74 | -webkit-mask-image: url(Images/securityPropertySecure.svg); 75 | } -------------------------------------------------------------------------------- /src/dt/settings/editFileSystemView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .file-system-header { 8 | display: flex; 9 | flex-direction: row; 10 | align-items: center; 11 | flex: auto; 12 | margin: 10px 0; 13 | } 14 | 15 | .file-system-header-text { 16 | font-size: 14px; 17 | flex: auto; 18 | } 19 | 20 | .add-button { 21 | margin-left: 10px; 22 | align-self: flex-start; 23 | } 24 | 25 | .file-system-list { 26 | max-width: 600px; 27 | flex: auto; 28 | } 29 | 30 | .file-system-list-empty { 31 | flex: auto; 32 | height: 30px; 33 | display: flex; 34 | align-items: center; 35 | justify-content: center; 36 | } 37 | 38 | .file-system-list-item { 39 | padding: 3px 5px 3px 5px; 40 | height: 30px; 41 | display: flex; 42 | align-items: center; 43 | flex: auto 1 1; 44 | } 45 | 46 | .file-system-value { 47 | white-space: nowrap; 48 | text-overflow: ellipsis; 49 | -webkit-user-select: none; 50 | color: #222; 51 | flex: 1 1 0px; 52 | overflow: hidden; 53 | } 54 | 55 | .file-system-separator { 56 | flex: 0 0 1px; 57 | background-color: rgb(231, 231, 231); 58 | height: 30px; 59 | margin: 0 4px; 60 | } 61 | 62 | .file-system-separator-invisible { 63 | visibility: hidden; 64 | height: 100% !important; 65 | } 66 | 67 | .file-system-edit-row { 68 | flex: none; 69 | display: flex; 70 | flex-direction: row; 71 | margin: 6px 5px; 72 | align-items: center; 73 | } 74 | 75 | .file-system-edit-row input { 76 | width: 100%; 77 | text-align: inherit; 78 | } 79 | 80 | .file-system-locked { 81 | flex: none; 82 | visibility: hidden; 83 | } 84 | 85 | .file-system-locked:after { 86 | content: "\1F512"; 87 | } 88 | 89 | .file-system-list-item.locked .file-system-locked { 90 | visibility: visible; 91 | } 92 | -------------------------------------------------------------------------------- /src/dt/settings/frameworkBlackboxSettingsTab.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .header { 8 | padding: 0 0 6px; 9 | border-bottom: 1px solid #EEEEEE; 10 | font-size: 18px; 11 | font-weight: normal; 12 | } 13 | 14 | .blackbox-content-scripts { 15 | margin-top: 10px; 16 | } 17 | 18 | .add-button { 19 | margin: 10px 0; 20 | align-self: flex-start; 21 | } 22 | 23 | .blackbox-list { 24 | margin-top: 10px; 25 | max-width: 500px; 26 | flex: 0 1 auto; 27 | } 28 | 29 | .blackbox-list-empty { 30 | flex: auto; 31 | height: 30px; 32 | display: flex; 33 | align-items: center; 34 | justify-content: center; 35 | } 36 | 37 | .blackbox-list-item { 38 | padding: 3px 5px 3px 5px; 39 | height: 30px; 40 | display: flex; 41 | align-items: center; 42 | position: relative; 43 | flex: auto 1 1; 44 | } 45 | 46 | .blackbox-pattern { 47 | white-space: nowrap; 48 | text-overflow: ellipsis; 49 | -webkit-user-select: none; 50 | color: #222; 51 | flex: auto; 52 | overflow: hidden; 53 | } 54 | 55 | .blackbox-list-item.blackbox-disabled .blackbox-pattern { 56 | text-decoration: line-through; 57 | } 58 | 59 | .blackbox-behavior { 60 | flex: 0 0 100px; 61 | padding-left: 10px; 62 | } 63 | 64 | .blackbox-behavior > select { 65 | margin-left: -10px; 66 | } 67 | 68 | .blackbox-separator { 69 | flex: 0 0 1px; 70 | background-color: rgb(231, 231, 231); 71 | height: 30px; 72 | margin: 0 4px; 73 | } 74 | 75 | .blackbox-separator-invisible { 76 | visibility: hidden; 77 | height: 100% !important; 78 | } 79 | 80 | .blackbox-edit-row { 81 | flex: none; 82 | display: flex; 83 | flex-direction: row; 84 | margin: 6px 5px; 85 | align-items: center; 86 | } 87 | 88 | .blackbox-edit-row input, 89 | .blackbox-edit-row select { 90 | width: 100%; 91 | text-align: inherit; 92 | } 93 | -------------------------------------------------------------------------------- /src/dt/settings/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.ActionDelegate", 5 | "actionId": "settings.show", 6 | "title": "Settings", 7 | "className": "WebInspector.SettingsController.ActionDelegate", 8 | "bindings": [ 9 | { 10 | "shortcut": "F1 Shift+?" 11 | } 12 | ] 13 | }, 14 | { 15 | "type": "@WebInspector.ActionDelegate", 16 | "actionId": "settings.help", 17 | "title": "Help", 18 | "className": "WebInspector.SettingsController.ActionDelegate" 19 | }, 20 | { 21 | "type": "@WebInspector.ActionDelegate", 22 | "actionId": "settings.shortcuts", 23 | "title": "Shortcuts", 24 | "className": "WebInspector.SettingsController.ActionDelegate" 25 | }, 26 | { 27 | "type": "@WebInspector.Revealer", 28 | "contextTypes": ["WebInspector.Setting"], 29 | "className": "WebInspector.SettingsController.Revealer" 30 | }, 31 | { 32 | "type": "context-menu-item", 33 | "location": "mainMenu/footer", 34 | "order": 10, 35 | "actionId": "settings.shortcuts" 36 | }, 37 | { 38 | "type": "context-menu-item", 39 | "location": "mainMenu/footer", 40 | "order": 20, 41 | "actionId": "settings.show" 42 | }, 43 | { 44 | "type": "context-menu-item", 45 | "location": "mainMenu/footer", 46 | "order": 30, 47 | "actionId": "settings.help" 48 | } 49 | ], 50 | "dependencies": [ 51 | "components" 52 | ], 53 | "scripts": [ 54 | "EditFileSystemView.js", 55 | "SettingsScreen.js", 56 | "FrameworkBlackboxSettingsTab.js" 57 | ], 58 | "resources": [ 59 | "editFileSystemView.css", 60 | "frameworkBlackboxSettingsTab.css", 61 | "settingsScreen.css" 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /src/dt/snippets/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": ["bindings"], 3 | "scripts": [ 4 | "SnippetStorage.js", 5 | "ScriptSnippetModel.js" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /src/dt/source_frame/fontView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .font-view { 8 | font-size: 60px; 9 | white-space: pre-wrap; 10 | word-wrap: break-word; 11 | text-align: center; 12 | padding: 15px; 13 | } 14 | -------------------------------------------------------------------------------- /src/dt/source_frame/imageView.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .image-view { 8 | overflow: auto; 9 | } 10 | 11 | .image-view > * { 12 | flex: none; 13 | } 14 | 15 | .image-view > .image { 16 | padding: 20px 20px 10px 20px; 17 | text-align: center; 18 | } 19 | 20 | .image-view > .info { 21 | padding-bottom: 10px; 22 | font-size: 11px; 23 | -webkit-user-select: text; 24 | } 25 | 26 | .image-view img.resource-image-view { 27 | max-width: 100%; 28 | max-height: 1000px; 29 | background-image: url(Images/checker.png); 30 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5); 31 | -webkit-user-select: text; 32 | -webkit-user-drag: auto; 33 | } 34 | 35 | .image-view .title { 36 | text-align: center; 37 | font-size: 13px; 38 | } 39 | 40 | .image-view .infoList { 41 | margin: 0; 42 | } 43 | 44 | .image-view .infoList dt { 45 | font-weight: bold; 46 | display: inline-block; 47 | width: 50%; 48 | text-align: right; 49 | color: rgb(76, 76, 76); 50 | } 51 | 52 | .image-view .infoList dd { 53 | display: inline-block; 54 | padding-left: 8px; 55 | width: 50%; 56 | text-align: left; 57 | margin: 0; 58 | } 59 | 60 | .image-view .infoList dd::after { 61 | white-space: pre; 62 | content: "\A"; 63 | } 64 | -------------------------------------------------------------------------------- /src/dt/source_frame/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": [ 3 | { 4 | "type": "@WebInspector.InplaceEditor", 5 | "className": "WebInspector.CodeMirrorUtils" 6 | }, 7 | { 8 | "type": "@WebInspector.TokenizerFactory", 9 | "className": "WebInspector.CodeMirrorUtils.TokenizerFactory" 10 | }, 11 | { 12 | "type": "setting", 13 | "category": "Sources", 14 | "title": "Default indentation:", 15 | "settingName": "textEditorIndent", 16 | "settingType": "enum", 17 | "defaultValue": " ", 18 | "options": [ 19 | ["2 spaces", " "], 20 | ["4 spaces", " "], 21 | ["8 spaces", " "], 22 | ["Tab character", "\t"] 23 | ] 24 | } 25 | ], 26 | "dependencies": [ 27 | "components" 28 | ], 29 | "scripts": [ 30 | "../cm/codemirror.js", 31 | "../cm/css.js", 32 | "../cm/javascript.js", 33 | "../cm/simple.js", 34 | "../cm/xml.js", 35 | "../cm/htmlmixed.js", 36 | "../cm/htmlembedded.js", 37 | 38 | "../cm/matchbrackets.js", 39 | "../cm/closebrackets.js", 40 | "../cm/markselection.js", 41 | "../cm/comment.js", 42 | "../cm/overlay.js", 43 | "../cm/activeline.js", 44 | 45 | "CodeMirrorUtils.js", 46 | "CodeMirrorDictionary.js", 47 | "TextEditorAutocompleteController.js", 48 | "CodeMirrorTextEditor.js", 49 | "FontView.js", 50 | "ImageView.js", 51 | "SourceFrame.js", 52 | "ResourceSourceFrame.js" 53 | ], 54 | "skip_compilation": [ 55 | "../cm/codemirror.js", 56 | "../cm/css.js", 57 | "../cm/javascript.js", 58 | "../cm/simple.js", 59 | "../cm/xml.js", 60 | "../cm/htmlmixed.js", 61 | "../cm/htmlembedded.js", 62 | 63 | "../cm/matchbrackets.js", 64 | "../cm/closebrackets.js", 65 | "../cm/markselection.js", 66 | "../cm/comment.js", 67 | "../cm/overlay.js", 68 | "../cm/activeline.js" 69 | ], 70 | "resources": [ 71 | "../cm/codemirror.css", 72 | "cmdevtools.css", 73 | "fontView.css", 74 | "imageView.css" 75 | ] 76 | } 77 | -------------------------------------------------------------------------------- /src/dt/sources/AddSourceMapURLDialog.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.HBox} 8 | * @param {function(string)} callback 9 | */ 10 | WebInspector.AddSourceMapURLDialog = function(callback) 11 | { 12 | WebInspector.HBox.call(this, true); 13 | this.registerRequiredCSS("sources/addSourceMapURLDialog.css"); 14 | this.contentElement.createChild("label").textContent = WebInspector.UIString("Source map URL: "); 15 | 16 | this._input = this.contentElement.createChild("input"); 17 | this._input.setAttribute("type", "text"); 18 | this._input.addEventListener("keydown", this._onKeyDown.bind(this), false); 19 | 20 | var addButton = this.contentElement.createChild("button"); 21 | addButton.textContent = WebInspector.UIString("Add"); 22 | addButton.addEventListener("click", this._apply.bind(this), false); 23 | 24 | this.setDefaultFocusedElement(this._input); 25 | this._callback = callback; 26 | } 27 | 28 | /** 29 | * @param {function(string)} callback 30 | */ 31 | WebInspector.AddSourceMapURLDialog.show = function(callback) 32 | { 33 | var dialog = new WebInspector.Dialog(); 34 | var addSourceMapURLDialog = new WebInspector.AddSourceMapURLDialog(done); 35 | addSourceMapURLDialog.show(dialog.element); 36 | dialog.setWrapsContent(true); 37 | dialog.show(); 38 | 39 | /** 40 | * @param {string} value 41 | */ 42 | function done(value) 43 | { 44 | dialog.detach(); 45 | callback(value); 46 | } 47 | } 48 | 49 | WebInspector.AddSourceMapURLDialog.prototype = { 50 | _apply: function() 51 | { 52 | this._callback(this._input.value); 53 | }, 54 | 55 | /** 56 | * @param {!Event} event 57 | */ 58 | _onKeyDown: function(event) 59 | { 60 | if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Enter.code) { 61 | event.preventDefault(); 62 | this._apply(); 63 | } 64 | }, 65 | 66 | __proto__: WebInspector.HBox.prototype 67 | } 68 | -------------------------------------------------------------------------------- /src/dt/sources/addSourceMapURLDialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | font-family: 'Lucida Grande', sans-serif; 9 | font-size: inherit; 10 | padding: 10px; 11 | } 12 | 13 | .widget { 14 | align-items: center; 15 | } 16 | 17 | label { 18 | white-space: nowrap; 19 | } 20 | 21 | input[type=text] { 22 | font-size: inherit; 23 | height: 24px; 24 | padding-left: 2px; 25 | margin: 0 5px; 26 | } 27 | 28 | input[type="search"]:focus, 29 | input[type="text"]:focus { 30 | outline: none; 31 | } 32 | 33 | button { 34 | background-image: linear-gradient(hsl(0, 0%, 93%), hsl(0, 0%, 93%) 38%, hsl(0, 0%, 87%)); 35 | border: 1px solid hsla(0, 0%, 0%, 0.25); 36 | border-radius: 2px; 37 | box-shadow: 0 1px 0 hsla(0, 0%, 0%, 0.08), inset 0 1px 2px hsla(0, 100%, 100%, 0.75); 38 | color: hsl(0, 0%, 27%); 39 | font-size: 12px; 40 | margin: 0 6px 0 6px; 41 | text-shadow: 0 1px 0 hsl(0, 0%, 94%); 42 | min-height: 2em; 43 | padding-left: 10px; 44 | padding-right: 10px; 45 | } 46 | 47 | button:active { 48 | background-color: rgb(215, 215, 215); 49 | background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239)); 50 | } 51 | -------------------------------------------------------------------------------- /src/dt/sources/filteredItemSelectionDialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .filtered-item-list-dialog { 8 | display: flex; 9 | flex-direction: column; 10 | flex: auto; 11 | } 12 | 13 | .filtered-item-list-dialog > input[type=text] { 14 | flex: 0 0 36px; 15 | border: 0; 16 | box-shadow: rgba(140, 140, 140, 0.5) 0 4px 16px; 17 | margin: 0; 18 | padding-left: 6px; 19 | z-index: 1; 20 | font-size: inherit; 21 | } 22 | 23 | .filtered-item-list-dialog > input[type=text]:focus { 24 | outline: none; 25 | } 26 | 27 | .filtered-item-list-dialog > div.container { 28 | flex: auto; 29 | overflow-y: auto; 30 | background: white; 31 | } 32 | 33 | .filtered-item-list-dialog-item { 34 | padding: 6px; 35 | white-space: nowrap; 36 | text-overflow: ellipsis; 37 | overflow: hidden; 38 | color: rgb(95, 95, 95); 39 | } 40 | 41 | .filtered-item-list-dialog-item.selected { 42 | background-color: #eee; 43 | } 44 | 45 | .filtered-item-list-dialog-item span.highlight { 46 | color: #222; 47 | font-weight: bold; 48 | } 49 | 50 | .filtered-item-list-dialog-item .filtered-item-list-dialog-title { 51 | flex: auto; 52 | overflow: hidden; 53 | text-overflow: ellipsis; 54 | } 55 | 56 | .filtered-item-list-dialog-item .filtered-item-list-dialog-subtitle { 57 | flex: none; 58 | overflow: hidden; 59 | text-overflow: ellipsis; 60 | color: rgb(155, 155, 155); 61 | } 62 | 63 | .filtered-item-list-dialog-item.one-row { 64 | display: flex; 65 | } 66 | 67 | .filtered-item-list-dialog-item.two-rows { 68 | border-bottom: 1px solid rgb(235, 235, 235); 69 | } 70 | -------------------------------------------------------------------------------- /src/dt/sources/serviceWorkersSidebar.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .service-worker { 8 | padding: 5px 5px 5px 8px; 9 | border-bottom: 1px solid #aaa; 10 | display: flex; 11 | align-items: center; 12 | } 13 | 14 | .service-worker:last-child { 15 | border-bottom: none; 16 | } 17 | 18 | .service-worker-scope { 19 | color: #777; 20 | flex: auto; 21 | margin: 5px 5px 0 0; 22 | white-space: nowrap; 23 | overflow: hidden; 24 | text-overflow: ellipsis; 25 | } 26 | -------------------------------------------------------------------------------- /src/dt/sources/uiList.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .list-item { 8 | padding: 2px 8px 3px 8px; 9 | position: relative; 10 | min-height: 18px; 11 | white-space: nowrap; 12 | } 13 | 14 | .list-item:nth-of-type(2n) { 15 | background-color: #f8f8f8; 16 | } 17 | 18 | .list-item.selected { 19 | background-color: #dadada; 20 | } 21 | 22 | .list-item.selected > .title { 23 | font-weight: bold; 24 | } 25 | 26 | .list-item:hover { 27 | background-color: #eee; 28 | } 29 | 30 | .list-item > .title { 31 | font-weight: normal; 32 | word-wrap: break-word; 33 | white-space: normal; 34 | } 35 | 36 | .list-item > .subtitle { 37 | margin-left: 5px; 38 | color: rgba(0, 0, 0, 0.7); 39 | text-overflow: ellipsis; 40 | overflow: hidden; 41 | float: right; 42 | } 43 | 44 | .list-item > .subtitle a { 45 | color: inherit; 46 | } 47 | 48 | .list-item.label { 49 | text-align: center; 50 | } 51 | 52 | .list-item.label .title, 53 | .list-item.label .subtitle { 54 | font-style: italic; 55 | font-weight: bold; 56 | color: #999; 57 | } 58 | 59 | .list-item.dimmed { 60 | opacity: 0.6; 61 | font-style: italic; 62 | } 63 | -------------------------------------------------------------------------------- /src/dt/temp_storage_shared_worker/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": ["TempStorageSharedWorker.js"] 3 | } 4 | -------------------------------------------------------------------------------- /src/dt/timeline/invalidationsTree.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .header, .children, .content { 8 | min-height: initial; 9 | line-height: initial; 10 | } 11 | 12 | /* This TreeElement is always expanded and has no arrow. */ 13 | /* FIXME(crbug.com/475618): Implement this in TreeElement. */ 14 | .children li::before { 15 | display: none; 16 | } 17 | 18 | .content { 19 | margin-bottom: 4px; 20 | } 21 | 22 | .content .stack-preview-container { 23 | margin-left: 8px; 24 | } 25 | 26 | .content .node-list { 27 | margin-left: 10px; 28 | } 29 | -------------------------------------------------------------------------------- /src/dt/timeline/timelineStatusDialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .timeline-status-dialog { 8 | display: flex; 9 | flex-direction: column; 10 | padding: 12px 16px; 11 | align-self: center; 12 | background-color: white; 13 | border: 1px solid lightgrey; 14 | box-shadow: grey 0 0 14px; 15 | margin-top: -1px; 16 | } 17 | 18 | .timeline-status-dialog div { 19 | margin: 2px; 20 | height: 14px; 21 | } 22 | 23 | .timeline-status-dialog ::before { 24 | display: inline-block; 25 | width: 80px; 26 | text-align: right; 27 | color: #aaa; 28 | margin-right: 10px; 29 | } 30 | 31 | .timeline-status-dialog .status::before { 32 | content: "Status"; 33 | } 34 | 35 | .timeline-status-dialog .time::before { 36 | content: "Time"; 37 | } 38 | 39 | .timeline-status-dialog .buffer-usage::before { 40 | content: "Buffer Usage"; 41 | } 42 | 43 | .timeline-status-dialog .buffer-usage .indicator-container { 44 | display: inline-block; 45 | width: 200px; 46 | height: 8px; 47 | background-color: #f4f4f4; 48 | display: inline-block; 49 | margin: 0 10px 0 0; 50 | } 51 | 52 | .timeline-status-dialog .buffer-usage .indicator { 53 | background-color: rgb(112, 166, 255); 54 | height: 100%; 55 | width: 0; 56 | margin: 0; 57 | } 58 | 59 | .timeline-status-dialog .stop-button { 60 | text-align: center; 61 | margin-top: 8px; 62 | height: 100%; 63 | } 64 | -------------------------------------------------------------------------------- /src/dt/toolbox.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | @import url("inspectorStyle.css"); 8 | @import url("ui/inspectorCommon.css"); 9 | -------------------------------------------------------------------------------- /src/dt/toolbox.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/dt/toolbox.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | Runtime.startApplication("toolbox"); 6 | -------------------------------------------------------------------------------- /src/dt/toolbox.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "platform", 4 | "type": "autostart" 5 | }, 6 | { 7 | "name": "toolbox_bootstrap", 8 | "type": "autostart" 9 | } 10 | ] 11 | 12 | -------------------------------------------------------------------------------- /src/dt/toolbox_bootstrap/Toolbox.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | (function() 6 | { 7 | 8 | /** 9 | * @suppressGlobalPropertiesCheck 10 | */ 11 | function toolboxLoaded() 12 | { 13 | if (!window.opener) 14 | return; 15 | var app = window.opener.WebInspector["AdvancedApp"]["_instance"](); 16 | app["toolboxLoaded"](document); 17 | } 18 | 19 | runOnWindowLoad(toolboxLoaded); 20 | 21 | })(); -------------------------------------------------------------------------------- /src/dt/toolbox_bootstrap/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "platform" 4 | ], 5 | "scripts": [ 6 | "Toolbox.js" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /src/dt/ui/DropDownMenu.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.Object} 8 | * @param {!Element} element 9 | */ 10 | WebInspector.DropDownMenu = function(element) 11 | { 12 | /** @type {!Array.} */ 13 | this._items = []; 14 | 15 | element.addEventListener("mousedown", this._onMouseDown.bind(this)); 16 | } 17 | 18 | /** @typedef {{id: string, title: string}} */ 19 | WebInspector.DropDownMenu.Item; 20 | 21 | /** @enum {string} */ 22 | WebInspector.DropDownMenu.Events = { 23 | ItemSelected: "ItemSelected" 24 | } 25 | 26 | WebInspector.DropDownMenu.prototype = { 27 | /** 28 | * @param {!Event} event 29 | */ 30 | _onMouseDown: function(event) 31 | { 32 | if (event.which !== 1) 33 | return; 34 | var menu = new WebInspector.ContextMenu(event); 35 | for (var item of this._items) 36 | menu.appendCheckboxItem(item.title, this._itemHandler.bind(this, item.id), item.id === this._selectedItemId); 37 | menu.show(); 38 | }, 39 | 40 | /** 41 | * @param {string} id 42 | */ 43 | _itemHandler: function(id) 44 | { 45 | this.dispatchEventToListeners(WebInspector.DropDownMenu.Events.ItemSelected, id); 46 | }, 47 | 48 | /** 49 | * @param {string} id 50 | * @param {string} title 51 | */ 52 | addItem: function(id, title) 53 | { 54 | this._items.push({id: id, title: title}); 55 | }, 56 | 57 | /** 58 | * @param {string} id 59 | */ 60 | selectItem: function(id) 61 | { 62 | this._selectedItemId = id; 63 | }, 64 | 65 | clear: function() 66 | { 67 | this._items = []; 68 | delete this._selectedItemId; 69 | }, 70 | 71 | __proto__: WebInspector.Object.prototype 72 | } 73 | -------------------------------------------------------------------------------- /src/dt/ui/EmptyWidget.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2011 Google Inc. All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are 6 | * met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * * Redistributions in binary form must reproduce the above 11 | * copyright notice, this list of conditions and the following disclaimer 12 | * in the documentation and/or other materials provided with the 13 | * distribution. 14 | * * Neither the name of Google Inc. nor the names of its 15 | * contributors may be used to endorse or promote products derived from 16 | * this software without specific prior written permission. 17 | * 18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | */ 30 | 31 | /** 32 | * @constructor 33 | * @extends {WebInspector.VBox} 34 | */ 35 | WebInspector.EmptyWidget = function(text) 36 | { 37 | WebInspector.VBox.call(this); 38 | this.registerRequiredCSS("ui/emptyWidget.css"); 39 | this.element.classList.add("empty-view"); 40 | this.textElement = this.element.createChild("span"); 41 | this._text = text; 42 | } 43 | 44 | WebInspector.EmptyWidget.prototype = { 45 | wasShown: function() 46 | { 47 | this.textElement.textContent = this._text; 48 | }, 49 | 50 | set text(text) 51 | { 52 | this._text = text; 53 | if (this.isShowing()) 54 | this.textElement.textContent = this._text; 55 | }, 56 | 57 | __proto__: WebInspector.VBox.prototype 58 | } 59 | 60 | -------------------------------------------------------------------------------- /src/dt/ui/ForwardedInputEventHandler.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | */ 8 | WebInspector.ForwardedInputEventHandler = function() 9 | { 10 | InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Events.KeyEventUnhandled, this._onKeyEventUnhandled, this); 11 | } 12 | 13 | WebInspector.ForwardedInputEventHandler.prototype = { 14 | /** 15 | * @param {!WebInspector.Event} event 16 | */ 17 | _onKeyEventUnhandled: function(event) 18 | { 19 | var data = event.data; 20 | var type = /** @type {string} */ (data.type); 21 | var keyIdentifier = /** @type {string} */ (data.keyIdentifier); 22 | var keyCode = /** @type {number} */ (data.keyCode); 23 | var modifiers =/** @type {number} */ (data.modifiers); 24 | 25 | if (type !== "keydown") 26 | return; 27 | 28 | WebInspector.context.setFlavor(WebInspector.ShortcutRegistry.ForwardedShortcut, WebInspector.ShortcutRegistry.ForwardedShortcut.instance); 29 | WebInspector.shortcutRegistry.handleKey(WebInspector.KeyboardShortcut.makeKey(keyCode, modifiers), keyIdentifier); 30 | WebInspector.context.setFlavor(WebInspector.ShortcutRegistry.ForwardedShortcut, null); 31 | } 32 | } 33 | 34 | /** @type {!WebInspector.ForwardedInputEventHandler} */ 35 | WebInspector.forwardedEventHandler = new WebInspector.ForwardedInputEventHandler(); 36 | -------------------------------------------------------------------------------- /src/dt/ui/RootView.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.VBox} 8 | */ 9 | WebInspector.RootView = function() 10 | { 11 | WebInspector.VBox.call(this); 12 | this.markAsRoot(); 13 | this.element.classList.add("root-view"); 14 | this.element.setAttribute("spellcheck", false); 15 | } 16 | 17 | WebInspector.RootView.prototype = { 18 | /** 19 | * @param {!Document} document 20 | */ 21 | attachToDocument: function(document) 22 | { 23 | document.defaultView.addEventListener("resize", this.doResize.bind(this), false); 24 | this._window = document.defaultView; 25 | this.doResize(); 26 | this.show(document.body); 27 | }, 28 | 29 | doResize: function() 30 | { 31 | if (this._window) { 32 | var size = this.constraints().minimum; 33 | var zoom = WebInspector.zoomManager.zoomFactor(); 34 | var right = Math.min(0, this._window.innerWidth - size.width / zoom); 35 | this.element.style.marginRight = right + "px"; 36 | var bottom = Math.min(0, this._window.innerHeight - size.height / zoom); 37 | this.element.style.marginBottom = bottom + "px"; 38 | } 39 | WebInspector.VBox.prototype.doResize.call(this); 40 | }, 41 | 42 | __proto__: WebInspector.VBox.prototype 43 | } 44 | -------------------------------------------------------------------------------- /src/dt/ui/ThrottledWidget.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.Widget} 8 | */ 9 | WebInspector.ThrottledWidget = function() 10 | { 11 | WebInspector.Widget.call(this); 12 | this._updateThrottler = new WebInspector.Throttler(100); 13 | this._updateWhenVisible = false; 14 | } 15 | 16 | WebInspector.ThrottledWidget.prototype = { 17 | /** 18 | * @protected 19 | * @return {!Promise.} 20 | */ 21 | doUpdate: function() 22 | { 23 | return Promise.resolve(); 24 | }, 25 | 26 | update: function() 27 | { 28 | this._updateWhenVisible = !this.isShowing(); 29 | if (this._updateWhenVisible) 30 | return; 31 | this._updateThrottler.schedule(innerUpdate.bind(this)); 32 | 33 | /** 34 | * @this {WebInspector.ThrottledWidget} 35 | * @return {!Promise.} 36 | */ 37 | function innerUpdate() 38 | { 39 | if (this.isShowing()) { 40 | return this.doUpdate(); 41 | } else { 42 | this._updateWhenVisible = true; 43 | return Promise.resolve(); 44 | } 45 | } 46 | }, 47 | 48 | /** 49 | * @override 50 | */ 51 | wasShown: function() 52 | { 53 | WebInspector.Widget.prototype.wasShown.call(this); 54 | if (this._updateWhenVisible) 55 | this.update(); 56 | }, 57 | 58 | __proto__: WebInspector.Widget.prototype 59 | } 60 | -------------------------------------------------------------------------------- /src/dt/ui/ZoomManager.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Chromium Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | /** 6 | * @constructor 7 | * @extends {WebInspector.Object} 8 | * @param {!Window} window 9 | * @param {!InspectorFrontendHostAPI} frontendHost 10 | */ 11 | WebInspector.ZoomManager = function(window, frontendHost) 12 | { 13 | this._frontendHost = frontendHost; 14 | this._zoomFactor = this._frontendHost.zoomFactor(); 15 | window.addEventListener("resize", this._onWindowResize.bind(this), true); 16 | }; 17 | 18 | WebInspector.ZoomManager.Events = { 19 | ZoomChanged: "ZoomChanged" 20 | }; 21 | 22 | WebInspector.ZoomManager.prototype = { 23 | /** 24 | * @return {number} 25 | */ 26 | zoomFactor: function() 27 | { 28 | return this._zoomFactor; 29 | }, 30 | 31 | /** 32 | * @param {number} value 33 | * @return {number} 34 | */ 35 | cssToDIP: function(value) 36 | { 37 | return value * this._zoomFactor; 38 | }, 39 | 40 | /** 41 | * @param {number} valueDIP 42 | * @return {number} 43 | */ 44 | dipToCSS: function(valueDIP) 45 | { 46 | return valueDIP / this._zoomFactor; 47 | }, 48 | 49 | _onWindowResize: function() 50 | { 51 | var oldZoomFactor = this._zoomFactor; 52 | this._zoomFactor = this._frontendHost.zoomFactor(); 53 | if (oldZoomFactor !== this._zoomFactor) 54 | this.dispatchEventToListeners(WebInspector.ZoomManager.Events.ZoomChanged, {from: oldZoomFactor, to: this._zoomFactor}); 55 | }, 56 | 57 | __proto__: WebInspector.Object.prototype 58 | }; 59 | 60 | /** 61 | * @type {!WebInspector.ZoomManager} 62 | */ 63 | WebInspector.zoomManager; 64 | -------------------------------------------------------------------------------- /src/dt/ui/checkboxTextLabel.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | padding: 0; 9 | margin: 0; 10 | display: inline-flex; 11 | flex-shrink: 0; 12 | align-items: center !important; 13 | } 14 | 15 | input { 16 | height: 12px; 17 | width: 12px; 18 | flex-shrink: 0; 19 | } 20 | 21 | input.dt-checkbox-themed { 22 | -webkit-appearance: none; 23 | margin: 0 5px auto 2px; 24 | border: 1px solid rgb(45, 45, 45); 25 | border-radius: 3px; 26 | background-color: rgb(102, 102, 102); 27 | position: relative; 28 | top: 1px; 29 | } 30 | 31 | input.dt-checkbox-themed:after { 32 | content: ''; 33 | line-height: 10px; 34 | position: absolute; 35 | cursor: pointer; 36 | width: 12px; 37 | height: 12px; 38 | background: none; 39 | } 40 | 41 | input.dt-checkbox-themed:checked:after { 42 | background-color: #333; 43 | } 44 | 45 | input.dt-checkbox-themed:after { 46 | -webkit-mask-image: url(Images/toolbarButtonGlyphs.png); 47 | -webkit-mask-size: 352px 168px; 48 | -webkit-mask-position: -128px -110px; 49 | } 50 | 51 | @media (-webkit-min-device-pixel-ratio: 1.5) { 52 | input.dt-checkbox-themed:after { 53 | -webkit-mask-image: url(Images/toolbarButtonGlyphs_2x.png); 54 | } 55 | 56 | } /* media */ 57 | -------------------------------------------------------------------------------- /src/dt/ui/closeButton.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | div { 8 | background-image: url(Images/toolbarButtonGlyphs.png); 9 | background-size: 352px 168px; 10 | } 11 | 12 | @media (-webkit-min-device-pixel-ratio: 1.5) { 13 | div { 14 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 15 | } 16 | } /* media */ 17 | 18 | .close-button { 19 | width: 14px; 20 | height: 14px; 21 | background-position: -128px -96px; 22 | cursor: default; 23 | } 24 | 25 | .close-button:hover { 26 | background-position: -96px -96px; 27 | } 28 | 29 | .close-button:active { 30 | background-position: -111px -96px; 31 | } 32 | 33 | .close-button-gray { 34 | width: 13px; 35 | height: 13px; 36 | background-position: -175px -96px; 37 | } 38 | 39 | .close-button-gray:hover { 40 | background-position: -143px -96px; 41 | } 42 | 43 | .close-button-gray:active { 44 | background-position: -160px -96px; 45 | } 46 | -------------------------------------------------------------------------------- /src/dt/ui/colorSwatch.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | white-space: nowrap; 9 | } 10 | 11 | .color-swatch { 12 | position: relative; 13 | margin-left: 1px; 14 | margin-right: 2px; 15 | width: 10px; 16 | height: 10px; 17 | top: 1px; 18 | display: inline-block; 19 | -webkit-user-select: none; 20 | background-image: url(Images/checker.png); 21 | line-height: 10px; 22 | } 23 | 24 | .color-swatch-inner { 25 | width: 100%; 26 | height: 100%; 27 | display: inline-block; 28 | border: 1px solid rgba(128, 128, 128, 0.6); 29 | } 30 | 31 | .color-swatch-inner:hover { 32 | border: 1px solid rgba(64, 64, 64, 0.8); 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/dt/ui/dialog.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | position: absolute; 9 | border: 1px solid rgb(204, 204, 204); 10 | box-shadow: rgb(140, 140, 140) 0 3px 14px; 11 | background: white; 12 | justify-content: flex-start; 13 | align-items: stretch; 14 | } 15 | 16 | .widget { 17 | display: flex; 18 | flex: auto; 19 | justify-content: flex-start; 20 | align-items: stretch; 21 | } 22 | 23 | :host-context(.wraps-content) { 24 | justify-content: center; 25 | align-items: flex-start; 26 | overflow: hidden; 27 | } 28 | 29 | :host-context(.wraps-content) .widget { 30 | flex: none !important; 31 | justify-content: center; 32 | align-items: center; 33 | } 34 | 35 | .dialog-close-button { 36 | position: absolute; 37 | right: 9px; 38 | top: 9px; 39 | } -------------------------------------------------------------------------------- /src/dt/ui/dropTarget.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | position: absolute; 9 | top: 0; 10 | bottom: 0; 11 | left: 0; 12 | right: 0; 13 | display: flex; 14 | background-color: rgba(255,255,255,0.8); 15 | z-index: 1000; 16 | } 17 | 18 | .drop-target-message { 19 | flex: auto; 20 | font-size: 30px; 21 | color: #999; 22 | display: flex; 23 | justify-content: center; 24 | align-items: center; 25 | margin: 20px; 26 | border: 4px dashed #ddd; 27 | pointer-events: none; 28 | } 29 | -------------------------------------------------------------------------------- /src/dt/ui/emptyWidget.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .empty-view { 8 | font-size: 24px; 9 | color: rgb(75%, 75%, 75%); 10 | font-weight: bold; 11 | padding: 10px; 12 | display: flex; 13 | align-items: center; 14 | justify-content: center; 15 | } 16 | -------------------------------------------------------------------------------- /src/dt/ui/infobar.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .infobar { 8 | color: rgb(34, 34, 34); 9 | padding: 4px 6px; 10 | white-space: nowrap; 11 | display: flex; 12 | align-items: flex-start; 13 | flex: auto; 14 | border-bottom: 1px solid rgb(171, 171, 171); 15 | } 16 | 17 | .infobar-warning { 18 | background-color: rgb(253, 242, 192); 19 | } 20 | 21 | .infobar-info { 22 | background-color: rgb(255, 255, 255); 23 | } 24 | 25 | .infobar .icon { 26 | flex: none; 27 | } 28 | 29 | .infobar .content { 30 | flex: auto; 31 | padding-left: 3px; 32 | overflow: hidden; 33 | text-overflow: ellipsis; 34 | } 35 | 36 | .infobar .close-button { 37 | flex: none; 38 | } 39 | 40 | .infobar .disable-button { 41 | flex: none; 42 | margin-right: 5px; 43 | text-decoration: underline; 44 | cursor: pointer; 45 | } 46 | -------------------------------------------------------------------------------- /src/dt/ui/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "platform", 4 | "common", 5 | "host" 6 | ], 7 | "scripts": [ 8 | "Widget.js", 9 | "treeoutline.js", 10 | "ActionRegistry.js", 11 | "ShortcutRegistry.js", 12 | "ColorSwatch.js", 13 | "Context.js", 14 | "ContextMenu.js", 15 | "Dialog.js", 16 | "DOMSyntaxHighlighter.js", 17 | "DropDownMenu.js", 18 | "DropTarget.js", 19 | "EmptyWidget.js", 20 | "FilterBar.js", 21 | "ForwardedInputEventHandler.js", 22 | "HistoryInput.js", 23 | "Infobar.js", 24 | "InplaceEditor.js", 25 | "KeyboardShortcut.js", 26 | "ListWidget.js", 27 | "Panel.js", 28 | "Popover.js", 29 | "ProgressIndicator.js", 30 | "ResizerWidget.js", 31 | "RootView.js", 32 | "SearchableView.js", 33 | "Section.js", 34 | "SettingsUI.js", 35 | "SidebarTreeElement.js", 36 | "SoftContextMenu.js", 37 | "SplitWidget.js", 38 | "StackView.js", 39 | "Toolbar.js", 40 | "Tooltip.js", 41 | "SuggestBox.js", 42 | "TabbedPane.js", 43 | "SidebarPane.js", 44 | "TextPrompt.js", 45 | "UIUtils.js", 46 | "ViewportControl.js", 47 | "ZoomManager.js", 48 | "ThrottledWidget.js" 49 | ], 50 | "resources": [ 51 | "checkboxTextLabel.css", 52 | "closeButton.css", 53 | "colorSwatch.css", 54 | "dialog.css", 55 | "dropTarget.css", 56 | "emptyWidget.css", 57 | "filter.css", 58 | "infobar.css", 59 | "inspectorCommon.css", 60 | "inspectorSyntaxHighlight.css", 61 | "listWidget.css", 62 | "panelEnablerView.css", 63 | "progressIndicator.css", 64 | "propertiesSection.css", 65 | "radioButton.css", 66 | "searchableView.css", 67 | "section.css", 68 | "smallIcon.css", 69 | "softContextMenu.css", 70 | "splitWidget.css", 71 | "toolbar.css", 72 | "suggestBox.css", 73 | "tabbedPane.css", 74 | "textButton.css", 75 | "textPrompt.css", 76 | "tooltip.css", 77 | "treeoutline.css" 78 | ] 79 | } 80 | -------------------------------------------------------------------------------- /src/dt/ui/progressIndicator.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .progress-indicator-shadow-stop-button { 8 | background-color: rgb(216, 0, 0) !important; 9 | border: 0; 10 | width: 10px; 11 | height: 12px; 12 | border-radius: 2px; 13 | } 14 | 15 | .progress-indicator-shadow-container { 16 | display: flex; 17 | flex: 1 0 auto; 18 | align-items: center; 19 | } 20 | 21 | .progress-indicator-shadow-container .title { 22 | text-overflow: ellipsis; 23 | overflow: hidden; 24 | max-width: 150px; 25 | margin-right: 2px; 26 | color: #777; 27 | } 28 | 29 | .progress-indicator-shadow-container progress { 30 | flex: auto; 31 | margin: 0 2px; 32 | width: 100px 33 | } 34 | -------------------------------------------------------------------------------- /src/dt/ui/propertiesSection.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .properties-tree { 8 | margin: 0; 9 | padding: 0 6px 2px; 10 | list-style: none; 11 | min-height: 18px; 12 | } 13 | 14 | .properties-tree ol { 15 | display: none; 16 | margin: 0; 17 | -webkit-padding-start: 12px; 18 | list-style: none; 19 | } 20 | 21 | .properties-tree ol.expanded { 22 | display: block; 23 | } 24 | 25 | .properties-tree li { 26 | margin-left: 12px; 27 | white-space: nowrap; 28 | text-overflow: ellipsis; 29 | overflow: hidden; 30 | -webkit-user-select: text; 31 | cursor: default; 32 | padding-top: 2px; 33 | line-height: 12px; 34 | } 35 | 36 | .properties-tree li.parent { 37 | margin-left: 1px; 38 | } 39 | 40 | .properties-tree li.parent::before { 41 | -webkit-user-select: none; 42 | background-image: url(Images/toolbarButtonGlyphs.png); 43 | background-size: 352px 168px; 44 | opacity: 0.5; 45 | content: "a"; 46 | width: 8px; 47 | float: left; 48 | margin-right: 4px; 49 | color: transparent; 50 | text-shadow: none; 51 | } 52 | 53 | @media (-webkit-min-device-pixel-ratio: 1.5) { 54 | .properties-tree li.parent::before { 55 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 56 | } 57 | } /* media */ 58 | 59 | .properties-tree li.parent::before { 60 | background-position: -4px -96px; 61 | } 62 | 63 | .properties-tree li.parent.expanded::before { 64 | background-position: -20px -96px; 65 | } 66 | 67 | .properties-tree li .info { 68 | padding-top: 4px; 69 | padding-bottom: 3px; 70 | } 71 | 72 | .properties-tree li.editing { 73 | margin-left: 10px; 74 | text-overflow: clip; 75 | } 76 | 77 | .properties-tree li.editing-sub-part { 78 | padding: 3px 6px 8px 18px; 79 | margin: -1px -6px -8px -6px; 80 | text-overflow: clip; 81 | } 82 | 83 | .properties-tree .name { 84 | color: rgb(136, 19, 145); 85 | flex-shrink: 0; 86 | } 87 | 88 | .properties-tree .separator { 89 | flex-shrink: 0; 90 | } 91 | 92 | .properties-tree .dimmed { 93 | opacity: 0.6; 94 | } 95 | 96 | .properties-tree .value.error { 97 | color: red; 98 | } 99 | 100 | .properties-tree .number { 101 | color: blue; 102 | } 103 | 104 | .properties-tree .keyword { 105 | color: rgb(136, 19, 79); 106 | } 107 | 108 | .properties-tree .color { 109 | color: rgb(118, 15, 21); 110 | } 111 | -------------------------------------------------------------------------------- /src/dt/ui/radioButton.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | ::content .dt-radio-button { 8 | height: 17px; 9 | width: 17px; 10 | min-width: 17px; 11 | border: 1px solid rgb(165, 165, 165); 12 | background-image: linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223)); 13 | border-radius: 8px; 14 | -webkit-appearance: none; 15 | vertical-align: middle; 16 | margin: 0 5px 5px 0; 17 | } 18 | 19 | ::content .dt-radio-button:active:not(:disabled) { 20 | background-image: linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239)); 21 | } 22 | 23 | ::content .dt-radio-button:checked { 24 | background: url(Images/radioDot.png) center no-repeat, 25 | linear-gradient(to bottom, rgb(252, 252, 252), rgb(223, 223, 223)); 26 | } 27 | 28 | ::content .dt-radio-button:checked:active { 29 | background: url(Images/radioDot.png) center no-repeat, 30 | linear-gradient(to bottom, rgb(194, 194, 194), rgb(239, 239, 239)); 31 | } 32 | -------------------------------------------------------------------------------- /src/dt/ui/section.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .section { 8 | position: relative; 9 | margin-top: 1px; 10 | } 11 | 12 | .section > .header { 13 | padding: 0 8px 0 5px; 14 | min-height: 18px; 15 | white-space: nowrap; 16 | background-origin: padding-box; 17 | background-clip: padding-box; 18 | } 19 | 20 | .section > .header::before { 21 | -webkit-user-select: none; 22 | background-image: url(Images/toolbarButtonGlyphs.png); 23 | background-size: 352px 168px; 24 | opacity: 0.5; 25 | content: "a"; 26 | color: transparent; 27 | text-shadow: none; 28 | float: left; 29 | width: 8px; 30 | margin-right: 4px; 31 | margin-top: 2px; 32 | } 33 | 34 | @media (-webkit-min-device-pixel-ratio: 1.5) { 35 | .section > .header::before { 36 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 37 | } 38 | } /* media */ 39 | 40 | .section > .header::before { 41 | background-position: -4px -96px; 42 | } 43 | 44 | .section.expanded > .header::before { 45 | background-position: -20px -96px; 46 | } 47 | 48 | .section > .header .title { 49 | font-weight: normal; 50 | word-wrap: break-word; 51 | white-space: normal; 52 | line-height: 18px; 53 | } 54 | 55 | .section > .header label { 56 | display: none; 57 | } 58 | 59 | .section.expanded .header label { 60 | display: inline; 61 | } 62 | 63 | .section > .header .subtitle { 64 | float: right; 65 | margin-left: 5px; 66 | max-width: 55%; 67 | text-overflow: ellipsis; 68 | overflow: hidden; 69 | } 70 | 71 | .section > .header .subtitle a { 72 | color: inherit; 73 | } 74 | 75 | .section > .properties { 76 | display: none; 77 | } 78 | 79 | .section.expanded > .properties { 80 | display: block; 81 | } 82 | -------------------------------------------------------------------------------- /src/dt/ui/smallIcon.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | div { 8 | width: 10px; 9 | height: 10px; 10 | margin-right: 2px; 11 | display: inline-block; 12 | } 13 | 14 | div.error-icon, 15 | div.revokedError-icon, 16 | div.warning-icon, 17 | div.info-icon, 18 | div.device-icon, 19 | div.red-ball, 20 | div.green-ball, 21 | div.orange-ball { 22 | background-image: url(Images/toolbarButtonGlyphs.png); 23 | background-size: 352px 168px; 24 | } 25 | 26 | @media (-webkit-min-device-pixel-ratio: 1.5) { 27 | div.error-icon, 28 | div.revokedError-icon, 29 | div.warning-icon, 30 | div.info-icon, 31 | div.device-icon, 32 | div.red-ball, 33 | div.green-ball, 34 | div.orange-ball { 35 | background-image: url(Images/toolbarButtonGlyphs_2x.png); 36 | } 37 | } /* media */ 38 | 39 | div.error-icon { 40 | background-position: -213px -96px; 41 | } 42 | 43 | div.revokedError-icon { 44 | background-position: -245px -107px; 45 | } 46 | 47 | div.warning-icon { 48 | background-position: -202px -107px; 49 | } 50 | 51 | div.info-icon { 52 | background-position: -213px -107px; 53 | } 54 | 55 | div.device-icon { 56 | background-position: -224px -107px; 57 | } 58 | 59 | div.red-ball { 60 | background-position: -224px -96px; 61 | } 62 | 63 | div.green-ball { 64 | background-position: -235px -96px; 65 | } 66 | 67 | div.orange-ball { 68 | background-position: -246px -96px; 69 | } 70 | -------------------------------------------------------------------------------- /src/dt/ui/textButton.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | :host { 8 | background-image: linear-gradient(hsl(0, 0%, 93%), hsl(0, 0%, 93%) 38%, hsl(0, 0%, 87%)); 9 | border: 1px solid hsla(0, 0%, 0%, 0.25); 10 | border-radius: 2px; 11 | box-shadow: 0 1px 0 hsla(0, 0%, 0%, 0.08), inset 0 1px 2px hsla(0, 100%, 100%, 0.75); 12 | color: hsl(0, 0%, 27%); 13 | font-size: 12px; 14 | margin: 0 1px 0 0; 15 | text-shadow: 0 1px 0 hsl(0, 0%, 94%); 16 | min-height: 2em !important; 17 | padding-left: 10px; 18 | padding-right: 10px; 19 | -webkit-user-select: none; 20 | flex: none; 21 | } 22 | 23 | :host-context(body.inactive), 24 | :host(:disabled) { 25 | background-image: linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6); 26 | border-color: rgba(80, 80, 80, 0.2); 27 | box-shadow: 0 1px 0 rgba(80, 80, 80, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); 28 | color: #aaa; 29 | } 30 | 31 | :host(:not(:disabled):hover) { 32 | background-image: linear-gradient(hsl(0, 0%, 94%), hsl(0, 0%, 94%) 38%, hsl(0, 0%, 88%)); 33 | border-color: hsla(0, 0%, 0%, 0.3); 34 | box-shadow: 0 1px 0 hsla(0, 0%, 0%, 0.12), inset 0 1px 2px hsla(0, 100%, 100%, 0.95); 35 | color: hsl(0, 0%, 0%); 36 | } 37 | 38 | :host(:not(:disabled):active) { 39 | background-image: linear-gradient(hsl(0, 0%, 91%), hsl(0, 0%, 91%) 38%, hsl(0, 0%, 84%)); 40 | box-shadow: none; 41 | text-shadow: none; 42 | } 43 | 44 | :host(:not(:disabled):focus) { 45 | -webkit-transition: border-color 200ms; 46 | border-color: rgb(77, 144, 254); 47 | outline: none; 48 | } 49 | -------------------------------------------------------------------------------- /src/dt/ui/textPrompt.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .text-prompt-editing { 8 | -webkit-user-select: text; 9 | box-shadow: rgba(0, 0, 0, .5) 3px 3px 4px; 10 | outline: 1px solid rgb(66%, 66%, 66%) !important; 11 | background-color: white; 12 | -webkit-user-modify: read-write-plaintext-only; 13 | text-overflow: clip !important; 14 | padding-left: 2px; 15 | margin-left: -2px; 16 | padding-right: 2px; 17 | margin-right: -2px; 18 | margin-bottom: -1px; 19 | padding-bottom: 1px; 20 | opacity: 1.0 !important; 21 | } 22 | 23 | .text-prompt-editing, 24 | .text-prompt-editing ::content * { 25 | color: #222 !important; 26 | text-decoration: none !important; 27 | -webkit-user-modify: read-write-plaintext-only; 28 | } 29 | 30 | ::content .auto-complete-text, 31 | .text-prompt-editing ::content .auto-complete-text { 32 | color: rgb(128, 128, 128) !important; 33 | -webkit-user-select: none; 34 | -webkit-user-modify: read-only; 35 | } 36 | 37 | .text-prompt-editing ::content br { 38 | display: none; 39 | } 40 | -------------------------------------------------------------------------------- /src/dt/ui/tooltip.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .tooltip { 8 | background: hsl(0, 0%, 95%); 9 | border-radius: 2px; 10 | color: hsl(0, 0%, 20%); 11 | padding: 5px 8px; 12 | font-size: 11px; 13 | line-height: 14px; 14 | display: flex; 15 | align-items: center; 16 | -webkit-filter: drop-shadow(0 1px 2px hsla(0, 0%, 0%, 0.3)); 17 | border: 1px solid hsla(0, 0%, 0%, 0.1); 18 | background-clip: padding-box; 19 | box-sizing: border-box; 20 | position: absolute; 21 | visibility: hidden; 22 | transition: visibility 0s 100ms, opacity 150ms cubic-bezier(0, 0, .2, 1); 23 | z-index: 20001; 24 | top: 0; 25 | left: 0; 26 | opacity: 0; 27 | text-overflow: ellipsis; 28 | overflow: hidden; 29 | } 30 | 31 | .tooltip.shown { 32 | visibility: visible; 33 | transition-delay: 600ms; 34 | opacity: 1; 35 | } 36 | 37 | .tooltip.shown.instant { 38 | transition-delay: 0s; 39 | } 40 | 41 | .tooltip-shortcut { 42 | color: hsl(0, 0%, 45%); 43 | display: inline-block; 44 | margin-left: 8px; 45 | flex: 0 0 auto; 46 | } 47 | -------------------------------------------------------------------------------- /src/dt/ui_lazy/flameChart.css: -------------------------------------------------------------------------------- 1 | .flame-chart-main-pane { 2 | overflow: hidden; 3 | } 4 | 5 | .flame-chart-marker-highlight-element { 6 | position: absolute; 7 | top: 0; 8 | height: 20px; 9 | width: 4px; 10 | margin: 0 -2px; 11 | content: ""; 12 | display: block; 13 | } 14 | 15 | .flame-chart-highlight-element { 16 | background-color: black; 17 | position: absolute; 18 | opacity: 0.2; 19 | pointer-events: none; 20 | } 21 | 22 | .flame-chart-selected-element { 23 | position: absolute; 24 | pointer-events: none; 25 | border-color: rgb(56, 121, 217); 26 | border-width: 1px; 27 | border-style: solid; 28 | background-color: rgba(56, 121, 217, 0.2); 29 | } 30 | 31 | .flame-chart-v-scroll { 32 | position: absolute; 33 | width: 14px; 34 | top: 0; 35 | right: 0; 36 | bottom: 0; 37 | overflow-x: hidden; 38 | z-index: 200; 39 | } 40 | 41 | .flame-chart-selection-overlay { 42 | position: absolute; 43 | z-index: 100; 44 | background-color: rgba(56, 121, 217, 0.3); 45 | border-color: rgb(16, 81, 177); 46 | border-width: 0 1px; 47 | border-style: solid; 48 | pointer-events: none; 49 | top: 0; 50 | bottom: 0; 51 | text-align: center; 52 | } 53 | 54 | .flame-chart-selection-overlay .time-span { 55 | white-space: nowrap; 56 | position: absolute; 57 | left: 0; 58 | right: 0; 59 | bottom: 0; 60 | } 61 | 62 | .flame-chart-entry-info { 63 | position: absolute; 64 | bottom: 6px; 65 | left: 12px; 66 | background-color: rgba(255, 255, 255, 0.7); 67 | pointer-events: none; 68 | } 69 | 70 | .flame-chart-entry-info table tr td:first-child { 71 | font-weight: bold; 72 | padding-right: 8px; 73 | } 74 | -------------------------------------------------------------------------------- /src/dt/ui_lazy/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": [ 3 | "platform", 4 | "common", 5 | "host", 6 | "ui" 7 | ], 8 | "scripts": [ 9 | "DataGrid.js", 10 | "ViewportDataGrid.js", 11 | "SortableDataGrid.js", 12 | "ShowMoreDataGridNode.js", 13 | "FlameChart.js", 14 | "OverviewGrid.js", 15 | "PieChart.js", 16 | "TimelineGrid.js", 17 | "TimelineOverviewPane.js" 18 | ], 19 | "resources": [ 20 | "dataGrid.css", 21 | "flameChart.css", 22 | "overviewGrid.css", 23 | "pieChart.css", 24 | "timelineGrid.css" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /src/dt/ui_lazy/overviewGrid.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .overview-grid-window-selector { 8 | position: absolute; 9 | top: 0; 10 | bottom: 0; 11 | background-color: rgba(125, 173, 217, 0.5); 12 | z-index: 250; 13 | pointer-events: none; 14 | } 15 | 16 | .overview-grid-window { 17 | background-color: white; 18 | position: absolute; 19 | left: 0; 20 | right: 0; 21 | top: 0; 22 | height: 20px; 23 | z-index: 150; 24 | } 25 | 26 | .overview-grid-dividers-background { 27 | left: 0; 28 | right: 0; 29 | top: 0; 30 | height: 20px; 31 | background-color: black; 32 | position: absolute; 33 | } 34 | 35 | .overview-grid-window-rulers { 36 | top: 0; 37 | bottom: 0; 38 | position: absolute; 39 | opacity: 0.2; 40 | border-right: 1px solid black; 41 | border-left: 1px solid black; 42 | z-index: 250; 43 | pointer-events: none; 44 | } 45 | 46 | .overview-grid-window-resizer { 47 | position: absolute; 48 | top: 0; 49 | height: 20px; 50 | width: 5px; 51 | margin-left: -2px; 52 | margin-right: -3px; 53 | background-color: rgb(153, 153, 153); 54 | z-index: 500; 55 | border-radius: 2px; 56 | box-shadow: white 1px 0 0, white -1px 0 0, white 0 1px 0, white 0 -1px 0; 57 | } 58 | 59 | .overview-grid-window-resizer-right { 60 | margin-left: -3px; 61 | margin-right: -2px; 62 | } 63 | 64 | .overview-grid-cursor-area { 65 | position: absolute; 66 | left: 0; 67 | right: 0; 68 | top: 20px; 69 | bottom: 0; 70 | z-index: 500; 71 | cursor: text; 72 | } 73 | 74 | .overview-grid-cursor-position { 75 | position: absolute; 76 | top: 0; 77 | bottom: 0; 78 | width: 2px; 79 | background-color: hsla(220, 95%, 50%, 0.7); 80 | z-index: 500; 81 | pointer-events: none; 82 | visibility: hidden; 83 | overflow: hidden; 84 | } 85 | -------------------------------------------------------------------------------- /src/dt/ui_lazy/pieChart.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .root { 8 | position: relative; 9 | width: 100%; 10 | height: 100%; 11 | } 12 | 13 | .pie-chart-foreground { 14 | position: absolute; 15 | width: 100%; 16 | height: 100%; 17 | z-index: 10; 18 | top: 0; 19 | display: flex; 20 | } 21 | 22 | .pie-chart-total { 23 | margin: auto; 24 | padding: 2px 5px; 25 | background-color: rgba(255, 255, 255, 0.6); 26 | } 27 | -------------------------------------------------------------------------------- /src/dt/ui_lazy/timelineGrid.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | .resources-dividers { 8 | position: absolute; 9 | left: 0; 10 | right: 0; 11 | top: 0; 12 | z-index: -100; 13 | bottom: 0; 14 | } 15 | 16 | .resources-event-dividers { 17 | position: absolute; 18 | left: 0; 19 | right: 0; 20 | height: 100%; 21 | top: 0; 22 | z-index: 300; 23 | pointer-events: none; 24 | } 25 | 26 | .resources-dividers-label-bar { 27 | position: absolute; 28 | top: 0; 29 | left: 0; 30 | right: 0; 31 | background-color: rgba(255, 255, 255, 0.85); 32 | background-clip: padding-box; 33 | height: 20px; 34 | z-index: 200; 35 | pointer-events: none; 36 | overflow: hidden; 37 | } 38 | 39 | .resources-divider { 40 | position: absolute; 41 | width: 1px; 42 | top: 0; 43 | bottom: 0; 44 | background-color: rgba(0, 0, 0, 0.1); 45 | } 46 | 47 | .resources-event-divider { 48 | position: absolute; 49 | width: 2px; 50 | top: 0; 51 | bottom: 0; 52 | z-index: 300; 53 | } 54 | 55 | .resources-divider-label { 56 | position: absolute; 57 | top: 4px; 58 | right: 3px; 59 | font-size: 80%; 60 | white-space: nowrap; 61 | pointer-events: none; 62 | } 63 | 64 | .timeline-grid-header { 65 | height: 20px; 66 | pointer-events: none; 67 | } 68 | -------------------------------------------------------------------------------- /src/dt/workspace/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": ["common", "host", "platform"], 3 | "scripts": [ 4 | "FileManager.js", 5 | "FileSystemMapping.js", 6 | "IsolatedFileSystem.js", 7 | "IsolatedFileSystemManager.js", 8 | "SearchConfig.js", 9 | "UISourceCode.js", 10 | "Workspace.js" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/lib/front-end-connection.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const ipc = require('electron').ipcMain; 4 | const EventEmitter = require('events'); 5 | 6 | /** 7 | * Responsible for creating and maintaining ipc connection with the frontend. 8 | */ 9 | class FrontEndConnection extends EventEmitter { 10 | 11 | constructor(receiver) { 12 | super(); 13 | 14 | this._receiver = receiver; 15 | 16 | ipc.on('frontend-message', handleFrontEndMessage.bind(this)); 17 | } 18 | 19 | respond(id, result) { 20 | sendMessage.call(this, { 21 | id, 22 | result 23 | }); 24 | } 25 | 26 | send(method, params) { 27 | sendMessage.call(this, { 28 | method, 29 | params 30 | }); 31 | } 32 | } 33 | 34 | function sendMessage(data) { 35 | this._receiver.send('backend-message', { 36 | data 37 | }); 38 | this.emit('log', 'Sent Message: ' + JSON.stringify(data)); 39 | } 40 | 41 | function handleFrontEndMessage(event, message) { 42 | this.emit('message', message); 43 | this.emit('log', 'Received Message: ' + JSON.stringify(message)); 44 | } 45 | 46 | module.exports = FrontEndConnection; 47 | -------------------------------------------------------------------------------- /src/lib/init-time.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const initTime = process.hrtime(); 4 | 5 | // DT requires us to use relative time in a strange format (xxx.xxx) 6 | module.exports = () => { 7 | let diff = process.hrtime(initTime); 8 | 9 | return diff[0] + diff[1] / 1e9; 10 | }; 11 | -------------------------------------------------------------------------------- /src/menu.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const shell = require('electron').shell; 4 | const path = require('path'); 5 | 6 | function buildMenu(app, options) { 7 | const template = [ 8 | { 9 | label: 'Edit', 10 | submenu: [ 11 | { 12 | label: 'Undo', 13 | accelerator: 'CmdOrCtrl+Z', 14 | role: 'undo' 15 | }, 16 | { 17 | label: 'Redo', 18 | accelerator: 'Shift+CmdOrCtrl+Z', 19 | role: 'redo' 20 | }, 21 | { 22 | type: 'separator' 23 | }, 24 | { 25 | label: 'Cut', 26 | accelerator: 'CmdOrCtrl+X', 27 | role: 'cut' 28 | }, 29 | { 30 | label: 'Copy', 31 | accelerator: 'CmdOrCtrl+C', 32 | role: 'copy' 33 | }, 34 | { 35 | label: 'Paste', 36 | accelerator: 'CmdOrCtrl+V', 37 | role: 'paste' 38 | }, 39 | { 40 | label: 'Select All', 41 | accelerator: 'CmdOrCtrl+A', 42 | role: 'selectall' 43 | } 44 | ] 45 | }, 46 | { 47 | label: 'Tools', 48 | submenu: [ 49 | { 50 | label: 'Root Certificate', 51 | click: () => { 52 | shell.showItemInFolder(path.resolve(options.sslCaDir, 'certs', 'ca.pem')); 53 | } 54 | } 55 | ] 56 | } 57 | ]; 58 | 59 | if (process.platform === 'darwin') { 60 | template.unshift({ 61 | label: app.getName(), 62 | submenu: [ 63 | { 64 | label: 'Quit', 65 | accelerator: 'Command+Q', 66 | click: () => app.quit() 67 | } 68 | ] 69 | }); 70 | } 71 | 72 | return template; 73 | } 74 | 75 | module.exports = buildMenu; 76 | --------------------------------------------------------------------------------