Diff
Modified: trunk/Source/WebCore/ChangeLog (117749 => 117750)
--- trunk/Source/WebCore/ChangeLog 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/ChangeLog 2012-05-21 08:55:58 UTC (rev 117750)
@@ -1,3 +1,76 @@
+2012-05-21 Pavel Feldman <[email protected]>
+
+ Web Inspector: implement revision history view.
+ https://bugs.webkit.org/show_bug.cgi?id=86966
+
+ Reviewed by Yury Semikhatsky.
+
+ Added revision view into the drawer. It now lists all the revisions
+ along with the inline diffs. Once source panel is enabled by default,
+ this view will completely substitute the one in the resources panel.
+ See the screenshot attached. View is updated when revisions are added
+ and when editor view is switched.
+
+ * English.lproj/localizedStrings.js:
+ * WebCore.gypi:
+ * WebCore.vcproj/WebCore.vcproj:
+ * inspector/compile-front-end.py:
+ * inspector/front-end/AdvancedSearchController.js:
+ (WebInspector.FileBasedSearchResultsPane.prototype._appendSearchMatches):
+ * inspector/front-end/ContextMenu.js:
+ (WebInspector.ContextMenu.prototype._itemSelected):
+ (WebInspector.ContextMenu.prototype.appendApplicableItems):
+ (WebInspector.ContextMenu.Provider.prototype.appendApplicableItems):
+ (WebInspector.ContextMenu.registerProvider):
+ * inspector/front-end/_javascript_SourceFrame.js:
+ (WebInspector._javascript_SourceFrame.prototype.populateTextAreaContextMenu):
+ * inspector/front-end/Resource.js:
+ (WebInspector.ResourceRevision.prototype.revertToThis):
+ * inspector/front-end/RevisionHistoryView.js: Added.
+ (WebInspector.RevisionHistoryView):
+ (WebInspector.RevisionHistoryView.showHistory):
+ (WebInspector.RevisionHistoryView.uiSourceCodeSelected):
+ (WebInspector.RevisionHistoryView.prototype._revisionAdded):
+ (WebInspector.RevisionHistoryView.prototype._onclose):
+ (WebInspector.RevisionHistoryTreeElement.else.revert):
+ (WebInspector.RevisionHistoryTreeElement):
+ (WebInspector.RevisionHistoryTreeElement.prototype.onexpand.step1):
+ (WebInspector.RevisionHistoryTreeElement.prototype.onexpand.step2):
+ (WebInspector.RevisionHistoryTreeElement.prototype.onexpand):
+ (WebInspector.RevisionHistoryTreeElement.prototype._createLine):
+ (WebInspector.RevisionHistoryTreeElement.prototype._diff.popsym):
+ (WebInspector.RevisionHistoryTreeElement.prototype._diff):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype._editorSelected):
+ (WebInspector.ScriptsPanel.prototype.registerUISourceCodeProvider):
+ (WebInspector.ScriptsPanel.prototype._showLocalHistory):
+ (WebInspector.ScriptsPanel.prototype.appendApplicableItems):
+ * inspector/front-end/StylesPanel.js:
+ (WebInspector.StyleSourceFrame.prototype._contentChanged):
+ (WebInspector.StyleSourceFrame.prototype.populateTextAreaContextMenu):
+ * inspector/front-end/WebKit.qrc:
+ * inspector/front-end/inspector.css:
+ (#search-results-pane-file-based .search-result):
+ (#search-results-pane-file-based .search-result:hover):
+ (#search-results-pane-file-based .search-match:hover):
+ (#search-results-pane-file-based .search-match .search-match-content):
+ * inspector/front-end/inspector.html:
+ * inspector/front-end/scriptsPanel.css:
+ (.outline-disclosure.revision-history-drawer):
+ (.outline-disclosure.revision-history-drawer ol):
+ (.outline-disclosure.revision-history-drawer > ol):
+ (.outline-disclosure.revision-history-drawer li):
+ (.outline-disclosure.revision-history-drawer li.parent):
+ (.revision-history-link):
+ (.outline-disclosure.revision-history-drawer .revision-history-line):
+ (.revision-history-drawer .webkit-line-number):
+ (.revision-history-line-added):
+ (.revision-history-line-removed):
+ * inspector/front-end/textViewer.css:
+ (.webkit-added-line.webkit-line-number):
+ (.webkit-removed-line.webkit-line-number):
+ (.webkit-changed-line.webkit-line-number):
+
2012-05-18 Ilya Tikhonovsky <[email protected]>
Web Inspector: upstream build dominators tree procedure from v8.
Modified: trunk/Source/WebCore/English.lproj/localizedStrings.js
(Binary files differ)
Modified: trunk/Source/WebCore/WebCore.gypi (117749 => 117750)
--- trunk/Source/WebCore/WebCore.gypi 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/WebCore.gypi 2012-05-21 08:55:58 UTC (rev 117750)
@@ -6463,6 +6463,7 @@
'inspector/front-end/ResourceView.js',
'inspector/front-end/ResourceWebSocketFrameView.js',
'inspector/front-end/ResourcesPanel.js',
+ 'inspector/front-end/RevisionHistoryView.js',
'inspector/front-end/ScopeChainSidebarPane.js',
'inspector/front-end/Script.js',
'inspector/front-end/ScriptFormatter.js',
@@ -6541,6 +6542,7 @@
'inspector/front-end/profilesPanel.css',
'inspector/front-end/resourceView.css',
'inspector/front-end/resourcesPanel.css',
+ 'inspector/front-end/revisionHistory.css',
'inspector/front-end/scriptsPanel.css',
'inspector/front-end/splitView.css',
'inspector/front-end/tabbedPane.css',
Modified: trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj (117749 => 117750)
--- trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj 2012-05-21 08:55:58 UTC (rev 117750)
@@ -74657,6 +74657,14 @@
>
</File>
<File
+ RelativePath="..\inspector\front-end\revisionHistory.css"
+ >
+ </File>
+ <File
+ RelativePath="..\inspector\front-end\RevisionHistoryView.js"
+ >
+ </File>
+ <File
RelativePath="..\inspector\front-end\ScopeChainSidebarPane.js"
>
</File>
Modified: trunk/Source/WebCore/inspector/compile-front-end.py (117749 => 117750)
--- trunk/Source/WebCore/inspector/compile-front-end.py 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/compile-front-end.py 2012-05-21 08:55:58 UTC (rev 117750)
@@ -216,10 +216,11 @@
"ScopeChainSidebarPane.js",
"_javascript_SourceFrame.js",
"PresentationConsoleMessageHelper.js",
- "TabbedEditorContainer.js",
+ "RevisionHistoryView.js",
"ScriptsNavigator.js",
"ScriptsPanel.js",
"ScriptsSearchScope.js",
+ "TabbedEditorContainer.js",
"WatchExpressionsSidebarPane.js",
"WorkerManager.js",
"WorkersSidebarPane.js",
Modified: trunk/Source/WebCore/inspector/front-end/AdvancedSearchController.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/AdvancedSearchController.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/AdvancedSearchController.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -585,7 +585,7 @@
var searchMatchElement = new TreeElement("", null, false);
fileTreeElement.appendChild(searchMatchElement);
- searchMatchElement.listItemElement.className = "search-match";
+ searchMatchElement.listItemElement.className = "search-match source-code";
searchMatchElement.listItemElement.appendChild(anchor);
}
},
Modified: trunk/Source/WebCore/inspector/front-end/ContextMenu.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/ContextMenu.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/ContextMenu.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -92,9 +92,44 @@
{
if (this._handlers[id])
this._handlers[id].call(this);
+ },
+
+ /**
+ * @param {Object} target
+ */
+ appendApplicableItems: function(target)
+ {
+ for (var i = 0; i < WebInspector.ContextMenu._providers.length; ++i) {
+ var provider = WebInspector.ContextMenu._providers[i];
+ provider.appendApplicableItems(this, target);
+ }
}
}
+/**
+ * @interface
+ */
+WebInspector.ContextMenu.Provider = function() {
+}
+
+WebInspector.ContextMenu.Provider.prototype = {
+ /**
+ * @param {WebInspector.ContextMenu} contextMenu
+ * @param {Object} target
+ */
+ appendApplicableItems: function(contextMenu, target) { }
+}
+
+/**
+ * @param {WebInspector.ContextMenu.Provider} provider
+ */
+WebInspector.ContextMenu.registerProvider = function(provider)
+{
+ WebInspector.ContextMenu._providers.push(provider);
+}
+
+WebInspector.ContextMenu._providers = [];
+
WebInspector.contextMenuItemSelected = function(id)
{
if (WebInspector._contextMenu)
Modified: trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -148,7 +148,9 @@
contextMenu.appendItem(addToWatchLabel, this._scriptsPanel.addToWatch.bind(this._scriptsPanel, selection.toString()));
var evaluateLabel = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Evaluate in console" : "Evaluate in Console");
contextMenu.appendItem(evaluateLabel, WebInspector.evaluateInConsole.bind(WebInspector, selection.toString()));
+ contextMenu.appendSeparator();
}
+ contextMenu.appendApplicableItems(this._uiSourceCode);
},
afterTextChanged: function(oldRange, newRange)
Modified: trunk/Source/WebCore/inspector/front-end/Resource.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/Resource.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/Resource.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -301,7 +301,7 @@
},
/**
- * @return {number}
+ * @return {Date}
*/
get contentTimestamp()
{
@@ -514,7 +514,8 @@
{
function revert(content)
{
- this._resource.setContent(content, true);
+ if (this._resource._content !== content)
+ this._resource.setContent(content, true);
}
this.requestContent(revert.bind(this));
},
Added: trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js (0 => 117750)
--- trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js (rev 0)
+++ trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.View}
+ * @param {WebInspector.UISourceCode} uiSourceCode
+ */
+WebInspector.RevisionHistoryView = function(uiSourceCode)
+{
+ WebInspector.View.call(this);
+ this.registerRequiredCSS("revisionHistory.css");
+ this.element.addStyleClass("revision-history-drawer");
+ this.element.addStyleClass("fill");
+ this.element.addStyleClass("outline-disclosure");
+
+ this._uiSourceCode = uiSourceCode;
+ this._resource = uiSourceCode.resource();
+
+ var revisionCount = 0;
+ if (!this._resource || !this._resource.history.length) {
+ var label = this.element.createChild("div", "storage-empty-view");
+ label.textContent = WebInspector.UIString("No revisions");
+ } else {
+ var olElement = this.element.createChild("ol");
+ var treeOutline = new TreeOutline(olElement);
+ revisionCount = this._resource.history.length;
+
+ var historyItem = new WebInspector.RevisionHistoryTreeElement(this._resource);
+ historyItem.selectable = false;
+ treeOutline.appendChild(historyItem);
+
+ for (var i = revisionCount - 1; i >= 0; --i) {
+ var revision = this._resource.history[i];
+ historyItem = new WebInspector.RevisionHistoryTreeElement(this._resource, i);
+ historyItem.selectable = false;
+ treeOutline.appendChild(historyItem);
+ }
+ }
+
+ this._statusElement = document.createElement("span");
+ if (!revisionCount)
+ this._statusElement.textContent = WebInspector.UIString("%s: no revisions", uiSourceCode.parsedURL.displayName);
+ else if (revisionCount === 1)
+ this._statusElement.textContent = WebInspector.UIString("%s: 1 revision", uiSourceCode.parsedURL.displayName);
+ else
+ this._statusElement.textContent = WebInspector.UIString("%s: %s revisions", uiSourceCode.parsedURL.displayName, revisionCount);
+
+ if (this._resource)
+ this._resource.addEventListener(WebInspector.Resource.Events.RevisionAdded, this._revisionAdded, this);
+}
+
+/**
+ * @param {WebInspector.UISourceCode} uiSourceCode
+ */
+WebInspector.RevisionHistoryView.showHistory = function(uiSourceCode)
+{
+ var view = new WebInspector.RevisionHistoryView(uiSourceCode);
+ WebInspector.showViewInDrawer(view._statusElement, view, view._onclose.bind(view));
+ WebInspector.RevisionHistoryView._revisionHistoryShowing = true;
+}
+
+/**
+ * @param {WebInspector.UISourceCode} uiSourceCode
+ */
+WebInspector.RevisionHistoryView.uiSourceCodeSelected = function(uiSourceCode)
+{
+ if (WebInspector.RevisionHistoryView._revisionHistoryShowing)
+ WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
+}
+
+WebInspector.RevisionHistoryView.prototype = {
+ _revisionAdded: function()
+ {
+ WebInspector.RevisionHistoryView.showHistory(this._uiSourceCode);
+ },
+
+ _onclose: function()
+ {
+ if (this._resource)
+ this._resource.removeEventListener(WebInspector.Resource.Events.RevisionAdded, this._revisionAdded, this);
+ delete WebInspector.RevisionHistoryView._revisionHistoryShowing;
+ }
+}
+
+WebInspector.RevisionHistoryView.prototype.__proto__ = WebInspector.View.prototype;
+
+/**
+ * @constructor
+ * @extends {TreeElement}
+ * @param {WebInspector.Resource} resource
+ * @param {number=} revisionOrdinal
+ */
+WebInspector.RevisionHistoryTreeElement = function(resource, revisionOrdinal)
+{
+ this._resource = resource;
+
+ var titleElement = document.createElement("span");
+ if (isNaN(revisionOrdinal)) {
+ this._revision = resource;
+ this._baseRevision = resource.history[resource.history.length - 1];
+
+ titleElement.textContent = resource.contentTimestamp.toLocaleTimeString();
+ } else {
+ this._revision = resource.history[revisionOrdinal];
+ this._baseRevision = resource.history[revisionOrdinal - 1];
+
+ titleElement.textContent = revisionOrdinal ? resource.history[revisionOrdinal].timestamp.toLocaleTimeString() : WebInspector.UIString("(original)");
+ function revert()
+ {
+ this._revision.revertToThis();
+ }
+
+ var revertElement = titleElement.createChild("span", "revision-history-link");
+ revertElement.textContent = WebInspector.UIString("revert to this");
+ revertElement.addEventListener("click", revert.bind(this), false);
+ }
+ TreeElement.call(this, titleElement, null, revisionOrdinal !== 0);
+}
+
+WebInspector.RevisionHistoryTreeElement.prototype = {
+ onexpand: function()
+ {
+ if (this._wasExpandedOnce)
+ return;
+ this._wasExpandedOnce = true;
+
+ this.childrenListElement.addStyleClass("source-code");
+ this._baseRevision.requestContent(step1.bind(this));
+
+ function step1(baseContent)
+ {
+ this._revision.requestContent(step2.bind(this, baseContent));
+ }
+
+ function step2(baseContent, revisionContent)
+ {
+ var oldLines = baseContent.split(/\r?\n/);
+ var newLines = revisionContent.split(/\r?\n/);
+ var diffData = this._diff(oldLines, newLines);
+
+ for (var i = 0; i < diffData.added.length; ++i) {
+ var lineNumber = diffData.added[i];
+ this._createLine(lineNumber, newLines[lineNumber], "added");
+ }
+
+ for (var i = 0; i < diffData.removed.length; ++i) {
+ var lineNumber = diffData.removed[i];
+ this._createLine(lineNumber, oldLines[lineNumber], "removed");
+ }
+ }
+ },
+
+ /**
+ * @param {number} lineNumber
+ * @param {string} lineContent
+ * @param {string} changeType
+ */
+ _createLine: function(lineNumber, lineContent, changeType)
+ {
+ var child = new TreeElement("", null, false);
+ child.selectable = false;
+ this.appendChild(child);
+ var lineElement = document.createElement("span");
+ var numberString = numberToStringWithSpacesPadding(lineNumber + 1, 4);
+ var lineNumberSpan = document.createElement("span");
+ lineNumberSpan.addStyleClass("webkit-line-number");
+ lineNumberSpan.textContent = numberString;
+ child.listItemElement.appendChild(lineNumberSpan);
+
+ var contentSpan = document.createElement("span");
+ contentSpan.textContent = lineContent;
+ child.listItemElement.appendChild(contentSpan);
+ child.listItemElement.addStyleClass("revision-history-line");
+ child.listItemElement.addStyleClass("revision-history-line-" + changeType);
+ },
+
+ _diff: function(x, y)
+ {
+ var symbols = {};
+ var r = 0, p = 0;
+ var result = [];
+
+ var p1 = popsym(0);
+ for (var i = 0; i < x.length; i++) {
+ p = r === p ? p1 : popsym(i);
+ p1 = popsym(i + 1);
+
+ var idx;
+ if (p > p1) {
+ i++;
+ idx = p1;
+ delete symbols[y[p]];
+ } else
+ idx = p;
+
+ if (idx === y.length)
+ p = popsym(i);
+ else {
+ r = idx;
+ result.push([i, r]);
+ }
+ }
+
+ var removed = [];
+ var added = [];
+ var ix = 0;
+ var iy = 0;
+ for (var i = 0; i < result.length; ++i) {
+ for (var j = ix; j < result[i][0]; ++j)
+ removed.push(j);
+ ix = result[i][0] + 1;
+ for (var j = iy; j < result[i][1]; ++j)
+ added.push(j);
+ iy = result[i][1] + 1;
+ }
+ for (var j = ix + 1; j < x.length; ++j)
+ removed.push(j);
+ for (var j = iy + 1; j < y.length; ++j)
+ added.push(j);
+
+ return { removed: removed, added: added };
+
+ function popsym(index)
+ {
+ var s = x[index];
+ var pos = symbols[s] + 1;
+ pos = y.indexOf(s, pos > r ? pos : r);
+ if (pos === -1)
+ pos = y.length;
+ symbols[s] = pos;
+ return pos;
+ }
+ }
+}
+
+WebInspector.RevisionHistoryTreeElement.prototype.__proto__ = TreeElement.prototype;
Property changes on: trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -27,6 +27,7 @@
/**
* @constructor
* @implements {WebInspector.TabbedEditorContainerDelegate}
+ * @implements {WebInspector.ContextMenu.Provider}
* @extends {WebInspector.Panel}
* @param {WebInspector.CompositeUISourceCodeProvider=} uiSourceCodeProviderForTest
*/
@@ -186,6 +187,7 @@
WebInspector.debuggerModel.enableDebugger();
WebInspector.advancedSearchController.registerSearchScope(new WebInspector.ScriptsSearchScope(this._uiSourceCodeProvider));
+ WebInspector.ContextMenu.registerProvider(this);
}
// Keep these in sync with WebCore::ScriptDebugServer
@@ -230,6 +232,7 @@
willHide: function()
{
+ WebInspector.Panel.prototype.willHide.call(this);
WebInspector.closeViewInDrawer();
},
@@ -578,6 +581,7 @@
_editorSelected: function(event)
{
var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data;
+ WebInspector.RevisionHistoryView.uiSourceCodeSelected(uiSourceCode);
this._showFile(uiSourceCode);
this._navigatorController.hideNavigatorOverlay();
},
@@ -1045,6 +1049,27 @@
registerUISourceCodeProvider: function(uiSourceCodeProvider)
{
this._uiSourceCodeProvider._registerUISourceCodeProvider(uiSourceCodeProvider);
+ },
+
+ /**
+ * @param {WebInspector.UISourceCode} uiSourceCode
+ */
+ _showLocalHistory: function(uiSourceCode)
+ {
+ WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
+ },
+
+ /**
+ * @param {WebInspector.ContextMenu} contextMenu
+ * @param {Object} target
+ */
+ appendApplicableItems: function(contextMenu, target)
+ {
+ if (WebInspector.experimentsSettings.sourceCodePanel.isEnabled() && target instanceof WebInspector.UISourceCode) {
+ contextMenu.appendSeparator();
+ contextMenu.appendItem(WebInspector.UIString("Revision history..."), this._showLocalHistory.bind(this, /** @type {WebInspector.UISourceCode} */ target));
+ contextMenu.appendSeparator();
+ }
}
}
Modified: trunk/Source/WebCore/inspector/front-end/StylesPanel.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/StylesPanel.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/StylesPanel.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -154,6 +154,14 @@
{
this._styleSource.contentChanged(this._styleSource.resource().content || "");
this.setContent(this._styleSource.resource().content, false, "text/stylesheet");
+ },
+
+ populateTextAreaContextMenu: function(contextMenu, lineNumber)
+ {
+ WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber);
+ var scriptsPanel = WebInspector.panels.scripts;
+ contextMenu.appendApplicableItems(this._styleSource);
+ contextMenu.appendSeparator();
}
}
Modified: trunk/Source/WebCore/inspector/front-end/WebKit.qrc (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/WebKit.qrc 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/WebKit.qrc 2012-05-21 08:55:58 UTC (rev 117750)
@@ -127,6 +127,7 @@
<file>ResourceView.js</file>
<file>ResourceWebSocketFrameView.js</file>
<file>ResourcesPanel.js</file>
+ <file>RevisionHistoryView.js</file>
<file>ScopeChainSidebarPane.js</file>
<file>Script.js</file>
<file>ScriptFormatter.js</file>
@@ -203,6 +204,7 @@
<file>profilesPanel.css</file>
<file>resourceView.css</file>
<file>resourcesPanel.css</file>
+ <file>revisionHistory.css</file>
<file>scriptsPanel.css</file>
<file>splitView.css</file>
<file>tabbedPane.css</file>
Modified: trunk/Source/WebCore/inspector/front-end/inspector.css (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/inspector.css 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/inspector.css 2012-05-21 08:55:58 UTC (rev 117750)
@@ -2508,7 +2508,7 @@
}
#search-results-pane-file-based .search-result {
- font-size: 12px;
+ font-size: 11px;
padding: 2px 0 2px 10px;
word-wrap: normal;
white-space: pre;
@@ -2517,7 +2517,6 @@
#search-results-pane-file-based .search-result:hover {
background-color: rgba(121, 121, 121, 0.1);
- -webkit-border-radius: 5px;
}
#search-results-pane-file-based .search-result .search-result-file-name {
@@ -2542,10 +2541,7 @@
text-decoration: underline;
}
-
#search-results-pane-file-based .search-match {
- font-family: 'dejavu sans mono', monospace;
- font-size: 11px;
word-wrap: normal;
white-space: pre;
}
@@ -2561,7 +2557,6 @@
#search-results-pane-file-based .search-match:hover {
background-color: rgba(56, 121, 217, 0.1);
- -webkit-border-radius: 5px;
}
#search-results-pane-file-based .search-match .highlighted-match {
@@ -2575,7 +2570,6 @@
#search-results-pane-file-based .search-match .search-match-content {
color: #000;
- white-space: pre;
}
.record-cpu-profile-status-bar-item .glyph, .record-profile-status-bar-item .glyph {
Modified: trunk/Source/WebCore/inspector/front-end/inspector.html (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/inspector.html 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/inspector.html 2012-05-21 08:55:58 UTC (rev 117750)
@@ -127,6 +127,7 @@
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
+ <script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
<script type="text/_javascript_" src=""
Added: trunk/Source/WebCore/inspector/front-end/revisionHistory.css (0 => 117750)
--- trunk/Source/WebCore/inspector/front-end/revisionHistory.css (rev 0)
+++ trunk/Source/WebCore/inspector/front-end/revisionHistory.css 2012-05-21 08:55:58 UTC (rev 117750)
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+.outline-disclosure.revision-history-drawer {
+ -webkit-padding-start: 0;
+ overflow: auto;
+}
+
+.outline-disclosure.revision-history-drawer ol {
+ margin-top: 2px;
+ -webkit-padding-start: 0;
+ padding-left: 0 !important;
+}
+
+.outline-disclosure.revision-history-drawer > ol {
+ padding-left: 0;
+}
+
+.outline-disclosure.revision-history-drawer li {
+ padding-left: 6px;
+ margin-top: 0;
+ margin-bottom: 0;
+ height: 13px;
+}
+
+.outline-disclosure.revision-history-drawer li.parent {
+ margin-left: 4px;
+}
+
+.revision-history-link {
+ text-decoration: underline;
+ cursor: pointer;
+ color: #00e;
+ padding: 0 4px;
+}
+
+.outline-disclosure.revision-history-drawer .revision-history-line {
+ padding-left: 0;
+ -webkit-user-select: text;
+}
+
+.revision-history-drawer .webkit-line-number {
+ margin-right: 5px;
+ border-right: 1px solid #BBB;
+ background-color: #F0F0F0;
+}
+
+.revision-history-line-added {
+ background-color: rgb(153, 238, 153);
+}
+
+.revision-history-line-removed {
+ background-color: rgb(255, 221, 221);
+}
Property changes on: trunk/Source/WebCore/inspector/front-end/revisionHistory.css
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebCore/inspector/front-end/textViewer.css (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/textViewer.css 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/textViewer.css 2012-05-21 08:55:58 UTC (rev 117750)
@@ -175,17 +175,17 @@
outline: 1px solid rgb(64, 115, 244);
}
-.diff-container .webkit-added-line.webkit-line-number {
+.webkit-added-line.webkit-line-number {
background-color: rgb(170, 255, 170);
color: #333;
}
-.diff-container .webkit-removed-line.webkit-line-number {
+.webkit-removed-line.webkit-line-number {
background-color: rgb(255, 220, 220);
text-decoration: line-through;
}
-.diff-container .webkit-changed-line.webkit-line-number {
+.webkit-changed-line.webkit-line-number {
background-color: rgb(170, 170, 255);
color: #333;
}
Modified: trunk/Source/WebCore/inspector/front-end/treeoutline.js (117749 => 117750)
--- trunk/Source/WebCore/inspector/front-end/treeoutline.js 2012-05-21 08:53:37 UTC (rev 117749)
+++ trunk/Source/WebCore/inspector/front-end/treeoutline.js 2012-05-21 08:55:58 UTC (rev 117750)
@@ -1117,7 +1117,8 @@
TreeElement.prototype.isEventWithinDisclosureTriangle = function(event)
{
// FIXME: We should not use getComputedStyle(). For that we need to get rid of using ::before for disclosure triangle. (http://webk.it/74446)
- var computedLeftPadding = window.getComputedStyle(this._listItemNode).getPropertyCSSValue("padding-left").getFloatValue(CSSPrimitiveValue.CSS_PX);
+ var paddingLeftValue = window.getComputedStyle(this._listItemNode).getPropertyCSSValue("padding-left");
+ var computedLeftPadding = paddingLeftValue ? paddingLeftValue.getFloatValue(CSSPrimitiveValue.CSS_PX) : 0;
var left = this._listItemNode.totalOffsetLeft() + computedLeftPadding;
return event.pageX >= left && event.pageX <= left + this.arrowToggleWidth && this.hasChildren;
}