Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1588)

Unified Diff: Source/devtools/front_end/main/Main.js

Issue 1264133002: Devtools: [WIP] Implement enhanced devtools extension language APIs Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Modify override dropdown to apply to console completions & transpile Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/devtools/front_end/main/Main.js
diff --git a/Source/devtools/front_end/main/Main.js b/Source/devtools/front_end/main/Main.js
index 44e480170a32f672ba88e5ef60439ab2f2db78c6..2c2ba1df82fa9350ae1d48318e1596f5267b9e15 100644
--- a/Source/devtools/front_end/main/Main.js
+++ b/Source/devtools/front_end/main/Main.js
@@ -210,7 +210,7 @@ WebInspector.Main.prototype = {
WebInspector.debuggerWorkspaceBinding = new WebInspector.DebuggerWorkspaceBinding(WebInspector.targetManager, WebInspector.workspace, WebInspector.networkMapping);
WebInspector.fileSystemWorkspaceBinding = new WebInspector.FileSystemWorkspaceBinding(WebInspector.isolatedFileSystemManager, WebInspector.workspace, WebInspector.networkMapping);
WebInspector.breakpointManager = new WebInspector.BreakpointManager(null, WebInspector.workspace, WebInspector.networkMapping, WebInspector.targetManager, WebInspector.debuggerWorkspaceBinding);
- WebInspector.extensionServer = new WebInspector.ExtensionServer();
+ WebInspector.extensionServer = new WebInspector.ExtensionServer(new WebInspector.ExtensionServer.UIDelegateImpl());
new WebInspector.OverlayController();
new WebInspector.ContentScriptProjectDecorator();
@@ -844,4 +844,104 @@ WebInspector.WorkerTerminatedScreen.prototype = {
__proto__: WebInspector.HelpScreen.prototype
}
+// TODO: Expose the 'sources' panel features more cleanly; files are
pfeldman 2015/08/13 21:15:46 This needs to use runtime DI
wes 2015/08/14 00:55:05 It can also probably be moved out of Main and back
+// opened via the `WebInspector.Revealer` construct (which does similar things
+// to the below) - we need something similar for each of these, probably.
+/**
+ * @constructor
+ * @implements {WebInspector.ExtensionServer.UIDelegate}
+ */
+WebInspector.ExtensionServer.UIDelegateImpl = function() {}
+WebInspector.ExtensionServer.UIDelegateImpl.prototype = {
+ /**
+ * @override
+ * @param {!WebInspector.UISourceCode} code
+ * @param {!Array<{kind: string, text: string, location: {startLine: number, startColumn: number, endLine: number, endColumn: number}}>} messages
+ * @suppress {missingProperties}
+ */
+ setResourceLineMessages: function(code, messages) {
+ self.runtime.loadModulePromise("sources").then(function() { //sources isn't autoloaded, but it tracks line messages - load it
pfeldman 2015/08/13 21:15:46 For example check out UISourceCode revealers (Reve
wes 2015/08/14 00:55:05 I actually mentioned that class in my TODO above.
pfeldman 2015/08/17 21:15:51 I think we need to introduce proper markers the UI
wes 2015/08/25 18:13:18 IMO, binding messages to lines is very limiting. I
+ var frame = WebInspector.SourcesPanel.instance().sourcesView().viewForFile(code);
+ frame.setMessagesForSource(messages.map(function(m){
+ return new WebInspector.SourceFrameMessage(m.text, WebInspector.SourceFrameMessage.Level[m.kind], {
+ line: m.location.startLine,
+ column: m.location.startColumn
+ }, {
+ line: m.location.endLine,
+ column: m.location.endColumn
+ });
+ }));
+ });
+ },
+
+ /**
+ * @override
+ * @param {!WebInspector.UISourceCode} code
+ * @return {!Promise<!SourceFrameMessageGetter>}
+ * @suppress {missingProperties}
+ */
+ getResourceLineMessages: function(code) {
wes 2015/08/14 00:55:05 We mentioned removing the `get` line messages (and
+ return self.runtime.loadModulePromise("sources").then(function() {
+ var frame = WebInspector.SourcesPanel.instance().sourcesView().viewForFile(code);
+ return /** @type {!SourceFrameMessageGetter} */ (frame.getMessagesFromSource());
+ });
+ },
+
+ /**
+ * @override
+ * @param {string} highlightText
+ * @param {!Array<!SearchResultArray>} groupedResults
+ * @suppress {missingProperties}
+ */
+ displaySearchResults: function(highlightText, groupedResults) {
+ //TODO: remove private refs, replace with (likely new) public ones
+ self.runtime.loadModulePromise("sources").then(function() { //sources isn't autoloaded - ensure it exists since we're about to swap to it!
+ var searchResultsPanel = WebInspector.AdvancedSearchView._instance;
+ if (!searchResultsPanel) {
+ searchResultsPanel = new WebInspector.AdvancedSearchView();
+ }
+
+ searchResultsPanel._nothingFound();
+ searchResultsPanel._searchConfig = new WebInspector.SearchConfig(highlightText, true, false); //TODO: HACK - really should be able to highlight arbitrary spans
+ searchResultsPanel._searchResultsPane = searchResultsPanel._searchScope.createSearchResultsPane(searchResultsPanel._searchConfig);
+ searchResultsPanel._resetResults();
+ searchResultsPanel._searchResultsElement.appendChild(searchResultsPanel._searchResultsPane.element);
+
+
+ WebInspector.inspectorView.setCurrentPanel(WebInspector.SourcesPanel.instance());
+ WebInspector.inspectorView.showViewInDrawer("sources.search");
+
+ groupedResults.map(function(sourceResult) { //map to file search result
+ var code = WebInspector.networkMapping.uiSourceCodeFromURL(sourceResult.source);
+ if (!code) {
+ return;
+ }
+ return new WebInspector.FileBasedSearchResult(
+ code,
+ sourceResult.map(function(item){
+ return new WebInspector.ContentProvider.SearchMatch(item.line, item.lineContent);
+ })
+ );
+ }).forEach(function(searchResult) {
+ if (!searchResult) return;
+ searchResultsPanel._addSearchResult(searchResult);
+ searchResultsPanel._searchResultsPane.addSearchResult(searchResult);
+ });
+ });
+ },
+
+ /**
+ * @override
+ * @param {!Array<string>} mimes
+ * @param {?} mode
+ */
+ addSimpleCodeMirrorMode: function(mimes, mode) {
+ self.runtime.loadModulePromise("source_frame").then(function() { //also not autoloaded (Though TBH this could just add waiting ones on start, rather than loading it when we want to add one)
+ for (var i=0; i<mimes.length; i++) {
+ CodeMirror.defineSimpleMode(mimes[i], mode);
+ }
+ });
+ }
+}
+
new WebInspector.Main();

Powered by Google App Engine
This is Rietveld 408576698