<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[183580] trunk/Source/WebInspectorUI</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/183580">183580</a></dd>
<dt>Author</dt> <dd>timothy@apple.com</dd>
<dt>Date</dt> <dd>2015-04-29 15:00:06 -0700 (Wed, 29 Apr 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Web Inspector: Split Storage from Resources tab
https://bugs.webkit.org/show_bug.cgi?id=144404
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.loaded):
(WebInspector.isTabTypeAllowed):
(WebInspector._tabContentViewForType):
(WebInspector._updateNewTabButtonState):
(WebInspector.showStorageTab):
(WebInspector._storageWasInspected):
* UserInterface/Controllers/ApplicationCacheManager.js:
(WebInspector.ApplicationCacheManager.prototype.initialize):
(WebInspector.ApplicationCacheManager.prototype.get applicationCacheObjects):
* UserInterface/Controllers/StorageManager.js:
(WebInspector.StorageManager.prototype.get domStorageObjects):
(WebInspector.StorageManager.prototype.get databases):
(WebInspector.StorageManager.prototype.get indexedDatabases):
(WebInspector.StorageManager.prototype.get cookieStorageObjects):
* UserInterface/Images/Storage.svg: Added.
* UserInterface/Main.html:
* UserInterface/Views/DatabaseTableContentView.js:
(WebInspector.DatabaseTableContentView.prototype._queryFinished): Clear _dataGrid,
since it might have been allocated but still be empty. This avoids an exception in
updateLayout next time layout is updated.
* UserInterface/Views/NewTabContentView.js:
(WebInspector.NewTabContentView):
* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
(WebInspector.ResourceSidebarPanel.prototype._domStorageObjectWasAdded): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._domStorageObjectWasInspected): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._databaseWasAdded): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._databaseWasInspected): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._indexedDatabaseWasAdded): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._cookieStorageObjectWasAdded): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._frameManifestAdded): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._frameManifestRemoved): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._addStorageChild): Deleted.
(WebInspector.ResourceSidebarPanel.prototype._storageCleared): Deleted.
* UserInterface/Views/ResourcesTabContentView.js:
(WebInspector.ResourcesTabContentView):
(WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/StorageSidebarPanel.js: Added.
(WebInspector.StorageSidebarPanel):
(WebInspector.StorageSidebarPanel.prototype.showDefaultContentView):
(WebInspector.StorageSidebarPanel.prototype.closed):
(WebInspector.StorageSidebarPanel.prototype._treeElementSelected):
(WebInspector.StorageSidebarPanel.prototype._domStorageObjectWasAdded):
(WebInspector.StorageSidebarPanel.prototype._addDOMStorageObject):
(WebInspector.StorageSidebarPanel.prototype._domStorageObjectWasInspected):
(WebInspector.StorageSidebarPanel.prototype._databaseWasAdded):
(WebInspector.StorageSidebarPanel.prototype._addDatabase):
(WebInspector.StorageSidebarPanel.prototype._databaseWasInspected):
(WebInspector.StorageSidebarPanel.prototype._indexedDatabaseWasAdded):
(WebInspector.StorageSidebarPanel.prototype._addIndexedDatabase):
(WebInspector.StorageSidebarPanel.prototype._cookieStorageObjectWasAdded):
(WebInspector.StorageSidebarPanel.prototype._addCookieStorageObject):
(WebInspector.StorageSidebarPanel.prototype._frameManifestAdded):
(WebInspector.StorageSidebarPanel.prototype._addFrameManifest):
(WebInspector.StorageSidebarPanel.prototype._frameManifestRemoved):
(WebInspector.StorageSidebarPanel.prototype._compareTreeElements):
(WebInspector.StorageSidebarPanel.prototype._addStorageChild):
(WebInspector.StorageSidebarPanel.prototype._storageCleared):
* UserInterface/Views/StorageTabContentView.js: Copied from Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js.
(WebInspector.StorageTabContentView):
(WebInspector.StorageTabContentView.prototype.get type):
(WebInspector.StorageTabContentView.prototype.canShowRepresentedObject):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs">trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseMainjs">trunk/Source/WebInspectorUI/UserInterface/Base/Main.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersApplicationCacheManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceControllersStorageManagerjs">trunk/Source/WebInspectorUI/UserInterface/Controllers/StorageManager.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceMainhtml">trunk/Source/WebInspectorUI/UserInterface/Main.html</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDatabaseTableContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsNewTabContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourceSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsResourcesTabContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesStoragesvg">trunk/Source/WebInspectorUI/UserInterface/Images/Storage.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsStorageSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/StorageSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsStorageTabContentViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/StorageTabContentView.js</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/ChangeLog        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -1,5 +1,78 @@
</span><span class="cx"> 2015-04-29 Timothy Hatcher <timothy@apple.com>
</span><span class="cx">
</span><ins>+ Web Inspector: Split Storage from Resources tab
+ https://bugs.webkit.org/show_bug.cgi?id=144404
+
+ Reviewed by Joseph Pecoraro.
+
+ * Localizations/en.lproj/localizedStrings.js:
+ * UserInterface/Base/Main.js:
+ (WebInspector.loaded):
+ (WebInspector.isTabTypeAllowed):
+ (WebInspector._tabContentViewForType):
+ (WebInspector._updateNewTabButtonState):
+ (WebInspector.showStorageTab):
+ (WebInspector._storageWasInspected):
+ * UserInterface/Controllers/ApplicationCacheManager.js:
+ (WebInspector.ApplicationCacheManager.prototype.initialize):
+ (WebInspector.ApplicationCacheManager.prototype.get applicationCacheObjects):
+ * UserInterface/Controllers/StorageManager.js:
+ (WebInspector.StorageManager.prototype.get domStorageObjects):
+ (WebInspector.StorageManager.prototype.get databases):
+ (WebInspector.StorageManager.prototype.get indexedDatabases):
+ (WebInspector.StorageManager.prototype.get cookieStorageObjects):
+ * UserInterface/Images/Storage.svg: Added.
+ * UserInterface/Main.html:
+ * UserInterface/Views/DatabaseTableContentView.js:
+ (WebInspector.DatabaseTableContentView.prototype._queryFinished): Clear _dataGrid,
+ since it might have been allocated but still be empty. This avoids an exception in
+ updateLayout next time layout is updated.
+ * UserInterface/Views/NewTabContentView.js:
+ (WebInspector.NewTabContentView):
+ * UserInterface/Views/ResourceSidebarPanel.js:
+ (WebInspector.ResourceSidebarPanel):
+ (WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
+ (WebInspector.ResourceSidebarPanel.prototype._domStorageObjectWasAdded): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._domStorageObjectWasInspected): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._databaseWasAdded): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._databaseWasInspected): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._indexedDatabaseWasAdded): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._cookieStorageObjectWasAdded): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._frameManifestAdded): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._frameManifestRemoved): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._addStorageChild): Deleted.
+ (WebInspector.ResourceSidebarPanel.prototype._storageCleared): Deleted.
+ * UserInterface/Views/ResourcesTabContentView.js:
+ (WebInspector.ResourcesTabContentView):
+ (WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
+ * UserInterface/Views/StorageSidebarPanel.js: Added.
+ (WebInspector.StorageSidebarPanel):
+ (WebInspector.StorageSidebarPanel.prototype.showDefaultContentView):
+ (WebInspector.StorageSidebarPanel.prototype.closed):
+ (WebInspector.StorageSidebarPanel.prototype._treeElementSelected):
+ (WebInspector.StorageSidebarPanel.prototype._domStorageObjectWasAdded):
+ (WebInspector.StorageSidebarPanel.prototype._addDOMStorageObject):
+ (WebInspector.StorageSidebarPanel.prototype._domStorageObjectWasInspected):
+ (WebInspector.StorageSidebarPanel.prototype._databaseWasAdded):
+ (WebInspector.StorageSidebarPanel.prototype._addDatabase):
+ (WebInspector.StorageSidebarPanel.prototype._databaseWasInspected):
+ (WebInspector.StorageSidebarPanel.prototype._indexedDatabaseWasAdded):
+ (WebInspector.StorageSidebarPanel.prototype._addIndexedDatabase):
+ (WebInspector.StorageSidebarPanel.prototype._cookieStorageObjectWasAdded):
+ (WebInspector.StorageSidebarPanel.prototype._addCookieStorageObject):
+ (WebInspector.StorageSidebarPanel.prototype._frameManifestAdded):
+ (WebInspector.StorageSidebarPanel.prototype._addFrameManifest):
+ (WebInspector.StorageSidebarPanel.prototype._frameManifestRemoved):
+ (WebInspector.StorageSidebarPanel.prototype._compareTreeElements):
+ (WebInspector.StorageSidebarPanel.prototype._addStorageChild):
+ (WebInspector.StorageSidebarPanel.prototype._storageCleared):
+ * UserInterface/Views/StorageTabContentView.js: Copied from Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js.
+ (WebInspector.StorageTabContentView):
+ (WebInspector.StorageTabContentView.prototype.get type):
+ (WebInspector.StorageTabContentView.prototype.canShowRepresentedObject):
+
+2015-04-29 Timothy Hatcher <timothy@apple.com>
+
</ins><span class="cx"> Web Inspector: Remove Legacy images and styles
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=144390
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -224,6 +224,7 @@
</span><span class="cx"> localizedStrings["Filter Console Log"] = "Filter Console Log";
</span><span class="cx"> localizedStrings["Filter Resource List"] = "Filter Resource List";
</span><span class="cx"> localizedStrings["Filter Search Results"] = "Filter Search Results";
</span><ins>+localizedStrings["Filter Storage List"] = "Filter Storage List";
</ins><span class="cx"> localizedStrings["Flows"] = "Flows";
</span><span class="cx"> localizedStrings["Focused"] = "Focused";
</span><span class="cx"> localizedStrings["Font"] = "Font";
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseMainjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> this._showingSplitConsoleSetting = new WebInspector.Setting("showing-split-console", false);
</span><span class="cx"> this._splitConsoleHeightSetting = new WebInspector.Setting("split-console-height", 150);
</span><span class="cx">
</span><del>- this._openTabsSetting = new WebInspector.Setting("open-tabs", ["elements", "resources", "timeline", "debugger", "console"]);
</del><ins>+ this._openTabsSetting = new WebInspector.Setting("open-tabs", ["elements", "resources", "timeline", "debugger", "storage", "console"]);
</ins><span class="cx"> this._selectedTabIndexSetting = new WebInspector.Setting("selected-tab-index", 0);
</span><span class="cx">
</span><span class="cx"> this.showShadowDOMSetting = new WebInspector.Setting("show-shadow-dom", false);
</span><span class="lines">@@ -376,6 +376,8 @@
</span><span class="cx"> switch (tabType) {
</span><span class="cx"> case WebInspector.ElementsTabContentView.Type:
</span><span class="cx"> return !!window.DOMAgent;
</span><ins>+ case WebInspector.StorageTabContentView.Type:
+ return !!window.DOMStorageAgent || !!window.DatabaseAgent || !!window.IndexedDBAgent;
</ins><span class="cx"> case WebInspector.TimelineTabContentView.Type:
</span><span class="cx"> return !!window.TimelineAgent;
</span><span class="cx"> }
</span><span class="lines">@@ -386,20 +388,22 @@
</span><span class="cx"> WebInspector._tabContentViewForType = function(tabType)
</span><span class="cx"> {
</span><span class="cx"> switch (tabType) {
</span><ins>+ case WebInspector.ConsoleTabContentView.Type:
+ return new WebInspector.ConsoleTabContentView;
+ case WebInspector.DebuggerTabContentView.Type:
+ return new WebInspector.DebuggerTabContentView;
</ins><span class="cx"> case WebInspector.ElementsTabContentView.Type:
</span><span class="cx"> return new WebInspector.ElementsTabContentView;
</span><ins>+ case WebInspector.NewTabContentView.Type:
+ return new WebInspector.NewTabContentView;
</ins><span class="cx"> case WebInspector.ResourcesTabContentView.Type:
</span><span class="cx"> return new WebInspector.ResourcesTabContentView;
</span><ins>+ case WebInspector.SearchTabContentView.Type:
+ return new WebInspector.SearchTabContentView;
+ case WebInspector.StorageTabContentView.Type:
+ return new WebInspector.StorageTabContentView;
</ins><span class="cx"> case WebInspector.TimelineTabContentView.Type:
</span><span class="cx"> return new WebInspector.TimelineTabContentView;
</span><del>- case WebInspector.DebuggerTabContentView.Type:
- return new WebInspector.DebuggerTabContentView;
- case WebInspector.ConsoleTabContentView.Type:
- return new WebInspector.ConsoleTabContentView;
- case WebInspector.SearchTabContentView.Type:
- return new WebInspector.SearchTabContentView;
- case WebInspector.NewTabTabContentView.Type:
- return new WebInspector.NewTabTabContentView;
</del><span class="cx"> default:
</span><span class="cx"> console.error("Unknown tab type", tabType);
</span><span class="cx"> }
</span><span class="lines">@@ -426,7 +430,8 @@
</span><span class="cx">
</span><span class="cx"> WebInspector._updateNewTabButtonState = function(event)
</span><span class="cx"> {
</span><del>- var newTabAllowed = this.isNewTabWithTypeAllowed(WebInspector.ConsoleTabContentView.Type) || this.isNewTabWithTypeAllowed(WebInspector.ElementsTabContentView.Type);
</del><ins>+ var newTabAllowed = this.isNewTabWithTypeAllowed(WebInspector.ConsoleTabContentView.Type) || this.isNewTabWithTypeAllowed(WebInspector.ElementsTabContentView.Type)
+ || this.isNewTabWithTypeAllowed(WebInspector.StorageTabContentView.Type);
</ins><span class="cx"> this.tabBar.newTabItem.disabled = !newTabAllowed;
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -753,6 +758,14 @@
</span><span class="cx"> this.tabBrowser.showTabForContentView(tabContentView);
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+WebInspector.showStorageTab = function()
+{
+ var tabContentView = this.tabBrowser.bestTabContentViewForClass(WebInspector.StorageTabContentView);
+ if (!tabContentView)
+ tabContentView = new WebInspector.StorageTabContentView;
+ this.tabBrowser.showTabForContentView(tabContentView);
+};
+
</ins><span class="cx"> WebInspector.showTimelineTab = function()
</span><span class="cx"> {
</span><span class="cx"> var tabContentView = this.tabBrowser.bestTabContentViewForClass(WebInspector.TimelineTabContentView);
</span><span class="lines">@@ -1440,8 +1453,7 @@
</span><span class="cx">
</span><span class="cx"> WebInspector._storageWasInspected = function(event)
</span><span class="cx"> {
</span><del>- // FIXME: This should show a Storage tab when we have one.
- this.showResourcesTab();
</del><ins>+ this.showStorageTab();
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> WebInspector._domNodeWasInspected = function(event)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersApplicationCacheManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/ApplicationCacheManager.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -44,12 +44,20 @@
</span><span class="cx">
</span><span class="cx"> initialize()
</span><span class="cx"> {
</span><del>- this._applicationCacheObjects = [];
</del><ins>+ this._applicationCacheObjects = {};
</ins><span class="cx">
</span><span class="cx"> if (window.ApplicationCacheAgent)
</span><span class="cx"> ApplicationCacheAgent.getFramesWithManifests(this._framesWithManifestsLoaded.bind(this));
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ get applicationCacheObjects()
+ {
+ var applicationCacheObjects = [];
+ for (var id in this._applicationCacheObjects)
+ applicationCacheObjects.push(this._applicationCacheObjects[id]);
+ return applicationCacheObjects;
+ }
+
</ins><span class="cx"> networkStateUpdated(isNowOnline)
</span><span class="cx"> {
</span><span class="cx"> this._online = isNowOnline;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceControllersStorageManagerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/StorageManager.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Controllers/StorageManager.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/StorageManager.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -60,6 +60,29 @@
</span><span class="cx"> this._cookieStorageObjects = {};
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ get domStorageObjects()
+ {
+ return this._domStorageObjects;
+ }
+
+ get databases()
+ {
+ return this._databaseObjects;
+ }
+
+ get indexedDatabases()
+ {
+ return this._indexedDatabases;
+ }
+
+ get cookieStorageObjects()
+ {
+ var cookieStorageObjects = [];
+ for (var host in this._cookieStorageObjects)
+ cookieStorageObjects.push(this._cookieStorageObjects[host]);
+ return cookieStorageObjects;
+ }
+
</ins><span class="cx"> domStorageWasAdded(id, host, isLocalStorage)
</span><span class="cx"> {
</span><span class="cx"> var domStorage = new WebInspector.DOMStorageObject(id, host, isLocalStorage);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesStoragesvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/Storage.svg (0 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/Storage.svg         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/Storage.svg        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright © 2015 Apple Inc. All rights reserved. -->
+<svg viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <path d="M 13.4475645 6.5701038 C 14.1131101 6.95915994 14.5 7.44243562 14.5 8 C 14.5 9.52952015 11.5885604 10.5 8 10.5 C 4.41143956 10.5 1.5 9.52952015 1.5 8 C 1.5 7.44243562 1.88688992 6.95915994 2.55243554 6.5701038 C 2.95984566 6.75017534 3.43583057 6.90963763 3.96620982 7.04342621 C 3.94919939 7.04895616 3.93228678 7.05452352 3.91547313 7.06012807 C 2.98303097 7.37094212 2.5 7.7516133 2.5 8 C 2.5 8.2483867 2.98303097 8.62905788 3.91547313 8.93987193 C 4.97873363 9.2942921 6.43777802 9.5 8 9.5 C 9.56222198 9.5 11.0212664 9.2942921 12.0845269 8.93987193 C 13.016969 8.62905788 13.5 8.2483867 13.5 8 C 13.5 7.7516133 13.016969 7.37094212 12.0845269 7.06012807 C 12.0677132 7.05452352 12.0508006 7.04895616 12.0337902 7.04342621 C 12.5641694 6.90963763 13.0401543 6.75017534 13.4475645 6.5701038 Z" class="filled" fill="black"/>
+ <path d="M 13.4475645 10.5701038 C 14.1131101 10.9591599 14.5 11.4424356 14.5 12 C 14.5 13.5295201 11.5885604 14.5 8 14.5 C 4.41143956 14.5 1.5 13.5295201 1.5 12 C 1.5 11.4424356 1.88688992 10.9591599 2.55243554 10.5701038 C 2.95984566 10.7501753 3.43583057 10.9096376 3.96620982 11.0434262 C 3.94919939 11.0489562 3.93228678 11.0545235 3.91547313 11.0601281 C 2.98303097 11.3709421 2.5 11.7516133 2.5 12 C 2.5 12.2483867 2.98303097 12.6290579 3.91547313 12.9398719 C 4.97873363 13.2942921 6.43777802 13.5 8 13.5 C 9.56222198 13.5 11.0212664 13.2942921 12.0845269 12.9398719 C 13.016969 12.6290579 13.5 12.2483867 13.5 12 C 13.5 11.7516133 13.016969 11.3709421 12.0845269 11.0601281 C 12.0677132 11.0545235 12.0508006 11.0489562 12.0337902 11.0434262 C 12.5641694 10.9096376 13.0401543 10.7501753 13.4475645 10.5701038 Z" class="filled" fill="black"/>
+ <path d="M 14.5 4 C 14.5 2.47047985 11.5885604 1.5 8 1.5 C 4.41143956 1.5 1.5 2.47047985 1.5 4 C 1.5 5.52952015 4.41143956 6.5 8 6.5 C 11.5885604 6.5 14.5 5.52952015 14.5 4 Z M 3.91547313 4.93987193 C 2.98303097 4.62905788 2.5 4.2483867 2.5 4 C 2.5 3.7516133 2.98303097 3.37094212 3.91547313 3.06012807 C 4.97873363 2.7057079 6.43777802 2.5 8 2.5 C 9.56222198 2.5 11.0212664 2.7057079 12.0845269 3.06012807 C 13.016969 3.37094212 13.5 3.7516133 13.5 4 C 13.5 4.2483867 13.016969 4.62905788 12.0845269 4.93987193 C 11.0212664 5.2942921 9.56222198 5.5 8 5.5 C 6.43777802 5.5 4.97873363 5.2942921 3.91547313 4.93987193 Z" class="filled" fill="black"/>
+</svg>
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceMainhtml"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Main.html (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Main.html        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Main.html        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -353,6 +353,7 @@
</span><span class="cx"> <script src="Views/ResourcesTabContentView.js"></script>
</span><span class="cx"> <script src="Views/SearchTabContentView.js"></script>
</span><span class="cx"> <script src="Views/SettingsTabContentView.js"></script>
</span><ins>+ <script src="Views/StorageTabContentView.js"></script>
</ins><span class="cx"> <script src="Views/TimelineTabContentView.js"></script>
</span><span class="cx">
</span><span class="cx"> <script src="Views/DetailsSection.js"></script>
</span><span class="lines">@@ -504,6 +505,7 @@
</span><span class="cx"> <script src="Views/SourceCodeTimelineTimelineDataGridNode.js"></script>
</span><span class="cx"> <script src="Views/SourceCodeTimelineTreeElement.js"></script>
</span><span class="cx"> <script src="Views/SourceMapResourceTreeElement.js"></script>
</span><ins>+ <script src="Views/StorageSidebarPanel.js"></script>
</ins><span class="cx"> <script src="Views/SyntaxHighlightingSupport.js"></script>
</span><span class="cx"> <script src="Views/TextContentView.js"></script>
</span><span class="cx"> <script src="Views/TextResourceContentView.js"></script>
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDatabaseTableContentViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -90,6 +90,8 @@
</span><span class="cx">
</span><span class="cx"> this._dataGrid = new WebInspector.DataGrid.createSortableDataGrid(columnNames, values);
</span><span class="cx"> if (!this._dataGrid || !this._dataGrid.element) {
</span><ins>+ this._dataGrid = undefined;
+
</ins><span class="cx"> // If the DataGrid is empty, then we were returned a table with no columns. This can happen when a table has
</span><span class="cx"> // no data, the SELECT query only returns column names when there is data.
</span><span class="cx"> this.element.removeChildren();
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsNewTabContentViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx">
</span><span class="cx"> var allowedNewTabs = [
</span><span class="cx"> {image: "Images/Elements.svg", title: WebInspector.UIString("Elements"), type: WebInspector.ElementsTabContentView.Type},
</span><ins>+ {image: "Images/Storage.svg", title: WebInspector.UIString("Storage"), type: WebInspector.StorageTabContentView.Type},
</ins><span class="cx"> {image: "Images/Console.svg", title: WebInspector.UIString("Console"), type: WebInspector.ConsoleTabContentView.Type}
</span><span class="cx"> ];
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourceSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -35,31 +35,6 @@
</span><span class="cx">
</span><span class="cx"> this._waitingForInitialMainFrame = true;
</span><span class="cx">
</span><del>- this._localStorageRootTreeElement = null;
- this._sessionStorageRootTreeElement = null;
-
- this._databaseRootTreeElement = null;
- this._databaseHostTreeElementMap = {};
-
- this._indexedDatabaseRootTreeElement = null;
- this._indexedDatabaseHostTreeElementMap = {};
-
- this._cookieStorageRootTreeElement = null;
-
- this._applicationCacheRootTreeElement = null;
- this._applicationCacheURLTreeElementMap = {};
-
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.CookieStorageObjectWasAdded, this._cookieStorageObjectWasAdded, this);
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasAdded, this._domStorageObjectWasAdded, this);
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasInspected, this._domStorageObjectWasInspected, this);
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasAdded, this._databaseWasAdded, this);
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasInspected, this._databaseWasInspected, this);
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.IndexedDatabaseWasAdded, this._indexedDatabaseWasAdded, this);
- WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.Cleared, this._storageCleared, this);
-
- WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestAdded, this._frameManifestAdded, this);
- WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestRemoved, this._frameManifestRemoved, this);
-
</del><span class="cx"> WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange, this._mainFrameDidChange, this);
</span><span class="cx">
</span><span class="cx"> WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, this._scriptWasAdded, this);
</span><span class="lines">@@ -300,15 +275,10 @@
</span><span class="cx">
</span><span class="cx"> _treeElementSelected(treeElement, selectedByUser)
</span><span class="cx"> {
</span><del>- if (treeElement instanceof WebInspector.FolderTreeElement || treeElement instanceof WebInspector.DatabaseHostTreeElement ||
- treeElement instanceof WebInspector.IndexedDatabaseHostTreeElement || treeElement instanceof WebInspector.IndexedDatabaseTreeElement)
</del><ins>+ if (treeElement instanceof WebInspector.FolderTreeElement)
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- if (treeElement instanceof WebInspector.ResourceTreeElement || treeElement instanceof WebInspector.ScriptTreeElement ||
- treeElement instanceof WebInspector.StorageTreeElement || treeElement instanceof WebInspector.DatabaseTableTreeElement ||
- treeElement instanceof WebInspector.DatabaseTreeElement || treeElement instanceof WebInspector.ApplicationCacheFrameTreeElement ||
- treeElement instanceof WebInspector.ContentFlowTreeElement || treeElement instanceof WebInspector.IndexedDatabaseObjectStoreTreeElement ||
- treeElement instanceof WebInspector.IndexedDatabaseObjectStoreIndexTreeElement) {
</del><ins>+ if (treeElement instanceof WebInspector.ResourceTreeElement || treeElement instanceof WebInspector.ScriptTreeElement) {
</ins><span class="cx"> WebInspector.showRepresentedObject(treeElement.representedObject);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -316,90 +286,6 @@
</span><span class="cx"> console.error("Unknown tree element", treeElement);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _domStorageObjectWasAdded(event)
- {
- var domStorage = event.data.domStorage;
- var storageElement = new WebInspector.DOMStorageTreeElement(domStorage);
-
- if (domStorage.isLocalStorage())
- this._localStorageRootTreeElement = this._addStorageChild(storageElement, this._localStorageRootTreeElement, WebInspector.UIString("Local Storage"));
- else
- this._sessionStorageRootTreeElement = this._addStorageChild(storageElement, this._sessionStorageRootTreeElement, WebInspector.UIString("Session Storage"));
- }
-
- _domStorageObjectWasInspected(event)
- {
- var domStorage = event.data.domStorage;
- var treeElement = this.treeElementForRepresentedObject(domStorage);
- treeElement.revealAndSelect(true);
- }
-
- _databaseWasAdded(event)
- {
- var database = event.data.database;
-
- console.assert(database instanceof WebInspector.DatabaseObject);
-
- if (!this._databaseHostTreeElementMap[database.host]) {
- this._databaseHostTreeElementMap[database.host] = new WebInspector.DatabaseHostTreeElement(database.host);
- this._databaseRootTreeElement = this._addStorageChild(this._databaseHostTreeElementMap[database.host], this._databaseRootTreeElement, WebInspector.UIString("Databases"));
- }
-
- var databaseElement = new WebInspector.DatabaseTreeElement(database);
- this._databaseHostTreeElementMap[database.host].appendChild(databaseElement);
- }
-
- _databaseWasInspected(event)
- {
- var database = event.data.database;
- var treeElement = this.treeElementForRepresentedObject(database);
- treeElement.revealAndSelect(true);
- }
-
- _indexedDatabaseWasAdded(event)
- {
- var indexedDatabase = event.data.indexedDatabase;
-
- console.assert(indexedDatabase instanceof WebInspector.IndexedDatabase);
-
- if (!this._indexedDatabaseHostTreeElementMap[indexedDatabase.host]) {
- this._indexedDatabaseHostTreeElementMap[indexedDatabase.host] = new WebInspector.IndexedDatabaseHostTreeElement(indexedDatabase.host);
- this._indexedDatabaseRootTreeElement = this._addStorageChild(this._indexedDatabaseHostTreeElementMap[indexedDatabase.host], this._indexedDatabaseRootTreeElement, WebInspector.UIString("Indexed Databases"));
- }
-
- var indexedDatabaseElement = new WebInspector.IndexedDatabaseTreeElement(indexedDatabase);
- this._indexedDatabaseHostTreeElementMap[indexedDatabase.host].appendChild(indexedDatabaseElement);
- }
-
- _cookieStorageObjectWasAdded(event)
- {
- console.assert(event.data.cookieStorage instanceof WebInspector.CookieStorageObject);
-
- var cookieElement = new WebInspector.CookieStorageTreeElement(event.data.cookieStorage);
- this._cookieStorageRootTreeElement = this._addStorageChild(cookieElement, this._cookieStorageRootTreeElement, WebInspector.UIString("Cookies"));
- }
-
- _frameManifestAdded(event)
- {
- var frameManifest = event.data.frameManifest;
- console.assert(frameManifest instanceof WebInspector.ApplicationCacheFrame);
-
- var manifest = frameManifest.manifest;
- var manifestURL = manifest.manifestURL;
- if (!this._applicationCacheURLTreeElementMap[manifestURL]) {
- this._applicationCacheURLTreeElementMap[manifestURL] = new WebInspector.ApplicationCacheManifestTreeElement(manifest);
- this._applicationCacheRootTreeElement = this._addStorageChild(this._applicationCacheURLTreeElementMap[manifestURL], this._applicationCacheRootTreeElement, WebInspector.UIString("Application Cache"));
- }
-
- var frameCacheElement = new WebInspector.ApplicationCacheFrameTreeElement(frameManifest);
- this._applicationCacheURLTreeElementMap[manifestURL].appendChild(frameCacheElement);
- }
-
- _frameManifestRemoved(event)
- {
- // FIXME: Implement this.
- }
-
</del><span class="cx"> _compareTreeElements(a, b)
</span><span class="cx"> {
</span><span class="cx"> // Always sort the main frame element first.
</span><span class="lines">@@ -414,76 +300,6 @@
</span><span class="cx"> return (a.mainTitle || "").localeCompare(b.mainTitle || "");
</span><span class="cx"> }
</span><span class="cx">
</span><del>- _addStorageChild(childElement, parentElement, folderName)
- {
- if (!parentElement) {
- childElement.flattened = true;
-
- this.contentTreeOutline.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, this.contentTreeOutline.children, this._compareTreeElements));
-
- return childElement;
- }
-
- if (parentElement instanceof WebInspector.StorageTreeElement) {
- console.assert(parentElement.flattened);
-
- var previousOnlyChild = parentElement;
- previousOnlyChild.flattened = false;
- this.contentTreeOutline.removeChild(previousOnlyChild);
-
- var folderElement = new WebInspector.FolderTreeElement(folderName);
- this.contentTreeOutline.insertChild(folderElement, insertionIndexForObjectInListSortedByFunction(folderElement, this.contentTreeOutline.children, this._compareTreeElements));
-
- folderElement.appendChild(previousOnlyChild);
- folderElement.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, folderElement.children, this._compareTreeElements));
-
- return folderElement;
- }
-
- console.assert(parentElement instanceof WebInspector.FolderTreeElement);
- parentElement.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, parentElement.children, this._compareTreeElements));
-
- return parentElement;
- }
-
- _storageCleared(event)
- {
- // Close all DOM and cookie storage content views since the main frame has navigated and all storages are cleared.
- this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.CookieStorageContentView);
- this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DOMStorageContentView);
- this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseTableContentView);
- this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseContentView);
- this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ApplicationCacheFrameContentView);
-
- if (this._localStorageRootTreeElement && this._localStorageRootTreeElement.parent)
- this._localStorageRootTreeElement.parent.removeChild(this._localStorageRootTreeElement);
-
- if (this._sessionStorageRootTreeElement && this._sessionStorageRootTreeElement.parent)
- this._sessionStorageRootTreeElement.parent.removeChild(this._sessionStorageRootTreeElement);
-
- if (this._databaseRootTreeElement && this._databaseRootTreeElement.parent)
- this._databaseRootTreeElement.parent.removeChild(this._databaseRootTreeElement);
-
- if (this._indexedDatabaseRootTreeElement && this._indexedDatabaseRootTreeElement.parent)
- this._indexedDatabaseRootTreeElement.parent.removeChild(this._indexedDatabaseRootTreeElement);
-
- if (this._cookieStorageRootTreeElement && this._cookieStorageRootTreeElement.parent)
- this._cookieStorageRootTreeElement.parent.removeChild(this._cookieStorageRootTreeElement);
-
- if (this._applicationCacheRootTreeElement && this._applicationCacheRootTreeElement.parent)
- this._applicationCacheRootTreeElement.parent.removeChild(this._applicationCacheRootTreeElement);
-
- this._localStorageRootTreeElement = null;
- this._sessionStorageRootTreeElement = null;
- this._databaseRootTreeElement = null;
- this._databaseHostTreeElementMap = {};
- this._indexedDatabaseRootTreeElement = null;
- this._indexedDatabaseHostTreeElementMap = {};
- this._cookieStorageRootTreeElement = null;
- this._applicationCacheRootTreeElement = null;
- this._applicationCacheURLTreeElementMap = {};
- }
-
</del><span class="cx"> _extraDomainsActivated()
</span><span class="cx"> {
</span><span class="cx"> if (WebInspector.debuggableType === WebInspector.DebuggableType.JavaScript)
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsResourcesTabContentViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js (183579 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js        2015-04-29 21:59:48 UTC (rev 183579)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> WebInspector.ResourcesTabContentView = function(identifier)
</span><span class="cx"> {
</span><span class="cx"> var tabBarItem = new WebInspector.TabBarItem("Images/Resources.svg", WebInspector.UIString("Resources"));
</span><del>- var detailsSidebarPanels = [WebInspector.resourceDetailsSidebarPanel, WebInspector.applicationCacheDetailsSidebarPanel, WebInspector.probeDetailsSidebarPanel];
</del><ins>+ var detailsSidebarPanels = [WebInspector.resourceDetailsSidebarPanel, WebInspector.probeDetailsSidebarPanel];
</ins><span class="cx">
</span><span class="cx"> // FIXME: Until ContentFlows are moved to the Elements tab, these details sidebar panels need to be included.
</span><span class="cx"> detailsSidebarPanels = detailsSidebarPanels.concat([WebInspector.domNodeDetailsSidebarPanel, WebInspector.cssStyleDetailsSidebarPanel]);
</span><span class="lines">@@ -52,12 +52,7 @@
</span><span class="cx">
</span><span class="cx"> canShowRepresentedObject: function(representedObject)
</span><span class="cx"> {
</span><del>- return representedObject instanceof WebInspector.Frame || representedObject instanceof WebInspector.Resource ||
- representedObject instanceof WebInspector.Script || representedObject instanceof WebInspector.ContentFlow ||
- representedObject instanceof WebInspector.DOMStorageObject || representedObject instanceof WebInspector.CookieStorageObject ||
- representedObject instanceof WebInspector.DatabaseTableObject || representedObject instanceof WebInspector.DatabaseObject ||
- representedObject instanceof WebInspector.ApplicationCacheFrame || representedObject instanceof WebInspector.IndexedDatabaseObjectStore ||
- representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex;
</del><ins>+ return representedObject instanceof WebInspector.Frame || representedObject instanceof WebInspector.Resource || representedObject instanceof WebInspector.Script;
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsStorageSidebarPaneljs"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Views/StorageSidebarPanel.js (0 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/StorageSidebarPanel.js         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/StorageSidebarPanel.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -0,0 +1,292 @@
</span><ins>+/*
+ * Copyright (C) 2013, 2015 Apple 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
+ */
+
+WebInspector.StorageSidebarPanel = class StorageSidebarPanel extends WebInspector.NavigationSidebarPanel
+{
+ constructor(contentBrowser)
+ {
+ super("storage", WebInspector.UIString("Storage"));
+
+ this.contentBrowser = contentBrowser;
+
+ this.filterBar.placeholder = WebInspector.UIString("Filter Storage List");
+
+ this._localStorageRootTreeElement = null;
+ this._sessionStorageRootTreeElement = null;
+
+ this._databaseRootTreeElement = null;
+ this._databaseHostTreeElementMap = {};
+
+ this._indexedDatabaseRootTreeElement = null;
+ this._indexedDatabaseHostTreeElementMap = {};
+
+ this._cookieStorageRootTreeElement = null;
+
+ this._applicationCacheRootTreeElement = null;
+ this._applicationCacheURLTreeElementMap = {};
+
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.CookieStorageObjectWasAdded, this._cookieStorageObjectWasAdded, this);
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasAdded, this._domStorageObjectWasAdded, this);
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasInspected, this._domStorageObjectWasInspected, this);
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasAdded, this._databaseWasAdded, this);
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasInspected, this._databaseWasInspected, this);
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.IndexedDatabaseWasAdded, this._indexedDatabaseWasAdded, this);
+ WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.Cleared, this._storageCleared, this);
+
+ WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestAdded, this._frameManifestAdded, this);
+ WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestRemoved, this._frameManifestRemoved, this);
+
+ this.contentTreeOutline.onselect = this._treeElementSelected.bind(this);
+
+ for (var domStorageObject of WebInspector.storageManager.domStorageObjects)
+ this._addDOMStorageObject(domStorageObject);
+
+ for (var cookieStorageObject of WebInspector.storageManager.cookieStorageObjects)
+ this._addCookieStorageObject(cookieStorageObject);
+
+ for (var database of WebInspector.storageManager.databases)
+ this._addDatabase(database);
+
+ for (var indexedDatabase of WebInspector.storageManager.indexedDatabases)
+ this._addIndexedDatabase(indexedDatabase);
+
+ for (var applicationCacheObject of WebInspector.applicationCacheManager.applicationCacheObjects)
+ this._addFrameManifest(applicationCacheObject);
+ }
+
+ // Public
+
+ showDefaultContentView()
+ {
+ // Don't show anything by default. It doesn't make a whole lot of sense here.
+ }
+
+ closed()
+ {
+ WebInspector.storageManager.removeEventListener(null, null, this);
+ WebInspector.applicationCacheManager.removeEventListener(null, null, this);
+ }
+
+ // Private
+
+ _treeElementSelected(treeElement, selectedByUser)
+ {
+ if (treeElement instanceof WebInspector.FolderTreeElement || treeElement instanceof WebInspector.DatabaseHostTreeElement ||
+ treeElement instanceof WebInspector.IndexedDatabaseHostTreeElement || treeElement instanceof WebInspector.IndexedDatabaseTreeElement)
+ return;
+
+ if (treeElement instanceof WebInspector.StorageTreeElement || treeElement instanceof WebInspector.DatabaseTableTreeElement ||
+ treeElement instanceof WebInspector.DatabaseTreeElement || treeElement instanceof WebInspector.ApplicationCacheFrameTreeElement ||
+ treeElement instanceof WebInspector.IndexedDatabaseObjectStoreTreeElement || treeElement instanceof WebInspector.IndexedDatabaseObjectStoreIndexTreeElement) {
+ WebInspector.showRepresentedObject(treeElement.representedObject);
+ return;
+ }
+
+ console.error("Unknown tree element", treeElement);
+ }
+
+ _domStorageObjectWasAdded(event)
+ {
+ var domStorage = event.data.domStorage;
+ this._addDOMStorageObject(event.data.domStorage);
+ }
+
+ _addDOMStorageObject(domStorage)
+ {
+ var storageElement = new WebInspector.DOMStorageTreeElement(domStorage);
+
+ if (domStorage.isLocalStorage())
+ this._localStorageRootTreeElement = this._addStorageChild(storageElement, this._localStorageRootTreeElement, WebInspector.UIString("Local Storage"));
+ else
+ this._sessionStorageRootTreeElement = this._addStorageChild(storageElement, this._sessionStorageRootTreeElement, WebInspector.UIString("Session Storage"));
+ }
+
+ _domStorageObjectWasInspected(event)
+ {
+ var domStorage = event.data.domStorage;
+ var treeElement = this.treeElementForRepresentedObject(domStorage);
+ treeElement.revealAndSelect(true);
+ }
+
+ _databaseWasAdded(event)
+ {
+ var database = event.data.database;
+ this._addDatabase(event.data.database);
+ }
+
+ _addDatabase(database)
+ {
+ console.assert(database instanceof WebInspector.DatabaseObject);
+
+ if (!this._databaseHostTreeElementMap[database.host]) {
+ this._databaseHostTreeElementMap[database.host] = new WebInspector.DatabaseHostTreeElement(database.host);
+ this._databaseRootTreeElement = this._addStorageChild(this._databaseHostTreeElementMap[database.host], this._databaseRootTreeElement, WebInspector.UIString("Databases"));
+ }
+
+ var databaseElement = new WebInspector.DatabaseTreeElement(database);
+ this._databaseHostTreeElementMap[database.host].appendChild(databaseElement);
+ }
+
+ _databaseWasInspected(event)
+ {
+ var database = event.data.database;
+ var treeElement = this.treeElementForRepresentedObject(database);
+ treeElement.revealAndSelect(true);
+ }
+
+ _indexedDatabaseWasAdded(event)
+ {
+ this._addIndexedDatabaseWasAdded(event.data.indexedDatabase);
+ }
+
+ _addIndexedDatabase(indexedDatabase)
+ {
+ console.assert(indexedDatabase instanceof WebInspector.IndexedDatabase);
+
+ if (!this._indexedDatabaseHostTreeElementMap[indexedDatabase.host]) {
+ this._indexedDatabaseHostTreeElementMap[indexedDatabase.host] = new WebInspector.IndexedDatabaseHostTreeElement(indexedDatabase.host);
+ this._indexedDatabaseRootTreeElement = this._addStorageChild(this._indexedDatabaseHostTreeElementMap[indexedDatabase.host], this._indexedDatabaseRootTreeElement, WebInspector.UIString("Indexed Databases"));
+ }
+
+ var indexedDatabaseElement = new WebInspector.IndexedDatabaseTreeElement(indexedDatabase);
+ this._indexedDatabaseHostTreeElementMap[indexedDatabase.host].appendChild(indexedDatabaseElement);
+ }
+
+ _cookieStorageObjectWasAdded(event)
+ {
+ this._addCookieStorageObject(event.data.cookieStorage);
+ }
+
+ _addCookieStorageObject(cookieStorage)
+ {
+ console.assert(cookieStorage instanceof WebInspector.CookieStorageObject);
+
+ var cookieElement = new WebInspector.CookieStorageTreeElement(cookieStorage);
+ this._cookieStorageRootTreeElement = this._addStorageChild(cookieElement, this._cookieStorageRootTreeElement, WebInspector.UIString("Cookies"));
+ }
+
+ _frameManifestAdded(event)
+ {
+ this._addFrameManifest(event.data.frameManifest);
+ }
+
+ _addFrameManifest(frameManifest)
+ {
+ console.assert(frameManifest instanceof WebInspector.ApplicationCacheFrame);
+
+ var manifest = frameManifest.manifest;
+ var manifestURL = manifest.manifestURL;
+ if (!this._applicationCacheURLTreeElementMap[manifestURL]) {
+ this._applicationCacheURLTreeElementMap[manifestURL] = new WebInspector.ApplicationCacheManifestTreeElement(manifest);
+ this._applicationCacheRootTreeElement = this._addStorageChild(this._applicationCacheURLTreeElementMap[manifestURL], this._applicationCacheRootTreeElement, WebInspector.UIString("Application Cache"));
+ }
+
+ var frameCacheElement = new WebInspector.ApplicationCacheFrameTreeElement(frameManifest);
+ this._applicationCacheURLTreeElementMap[manifestURL].appendChild(frameCacheElement);
+ }
+
+ _frameManifestRemoved(event)
+ {
+ // FIXME: Implement this.
+ }
+
+ _compareTreeElements(a, b)
+ {
+ console.assert(a.mainTitle);
+ console.assert(b.mainTitle);
+
+ return (a.mainTitle || "").localeCompare(b.mainTitle || "");
+ }
+
+ _addStorageChild(childElement, parentElement, folderName)
+ {
+ if (!parentElement) {
+ childElement.flattened = true;
+
+ this.contentTreeOutline.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, this.contentTreeOutline.children, this._compareTreeElements));
+
+ return childElement;
+ }
+
+ if (parentElement instanceof WebInspector.StorageTreeElement) {
+ console.assert(parentElement.flattened);
+
+ var previousOnlyChild = parentElement;
+ previousOnlyChild.flattened = false;
+ this.contentTreeOutline.removeChild(previousOnlyChild);
+
+ var folderElement = new WebInspector.FolderTreeElement(folderName);
+ this.contentTreeOutline.insertChild(folderElement, insertionIndexForObjectInListSortedByFunction(folderElement, this.contentTreeOutline.children, this._compareTreeElements));
+
+ folderElement.appendChild(previousOnlyChild);
+ folderElement.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, folderElement.children, this._compareTreeElements));
+
+ return folderElement;
+ }
+
+ console.assert(parentElement instanceof WebInspector.FolderTreeElement);
+ parentElement.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, parentElement.children, this._compareTreeElements));
+
+ return parentElement;
+ }
+
+ _storageCleared(event)
+ {
+ // Close all DOM and cookie storage content views since the main frame has navigated and all storages are cleared.
+ this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.CookieStorageContentView);
+ this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DOMStorageContentView);
+ this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseTableContentView);
+ this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseContentView);
+ this.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ApplicationCacheFrameContentView);
+
+ if (this._localStorageRootTreeElement && this._localStorageRootTreeElement.parent)
+ this._localStorageRootTreeElement.parent.removeChild(this._localStorageRootTreeElement);
+
+ if (this._sessionStorageRootTreeElement && this._sessionStorageRootTreeElement.parent)
+ this._sessionStorageRootTreeElement.parent.removeChild(this._sessionStorageRootTreeElement);
+
+ if (this._databaseRootTreeElement && this._databaseRootTreeElement.parent)
+ this._databaseRootTreeElement.parent.removeChild(this._databaseRootTreeElement);
+
+ if (this._indexedDatabaseRootTreeElement && this._indexedDatabaseRootTreeElement.parent)
+ this._indexedDatabaseRootTreeElement.parent.removeChild(this._indexedDatabaseRootTreeElement);
+
+ if (this._cookieStorageRootTreeElement && this._cookieStorageRootTreeElement.parent)
+ this._cookieStorageRootTreeElement.parent.removeChild(this._cookieStorageRootTreeElement);
+
+ if (this._applicationCacheRootTreeElement && this._applicationCacheRootTreeElement.parent)
+ this._applicationCacheRootTreeElement.parent.removeChild(this._applicationCacheRootTreeElement);
+
+ this._localStorageRootTreeElement = null;
+ this._sessionStorageRootTreeElement = null;
+ this._databaseRootTreeElement = null;
+ this._databaseHostTreeElementMap = {};
+ this._indexedDatabaseRootTreeElement = null;
+ this._indexedDatabaseHostTreeElementMap = {};
+ this._cookieStorageRootTreeElement = null;
+ this._applicationCacheRootTreeElement = null;
+ this._applicationCacheURLTreeElementMap = {};
+ }
+};
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsStorageTabContentViewjsfromrev183579trunkSourceWebInspectorUIUserInterfaceViewsResourcesTabContentViewjs"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebInspectorUI/UserInterface/Views/StorageTabContentView.js (from rev 183579, trunk/Source/WebInspectorUI/UserInterface/Views/ResourcesTabContentView.js) (0 => 183580)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/StorageTabContentView.js         (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/StorageTabContentView.js        2015-04-29 22:00:06 UTC (rev 183580)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
+ */
+
+WebInspector.StorageTabContentView = function(identifier)
+{
+ var tabBarItem = new WebInspector.TabBarItem("Images/Storage.svg", WebInspector.UIString("Storage"));
+ var detailsSidebarPanels = [WebInspector.applicationCacheDetailsSidebarPanel];
+
+ WebInspector.ContentBrowserTabContentView.call(this, identifier || "storage", "storage", tabBarItem, WebInspector.StorageSidebarPanel, detailsSidebarPanels);
+};
+
+WebInspector.StorageTabContentView.prototype = {
+ constructor: WebInspector.StorageTabContentView,
+ __proto__: WebInspector.ContentBrowserTabContentView.prototype,
+
+ // Public
+
+ get type()
+ {
+ return WebInspector.StorageTabContentView.Type;
+ },
+
+ canShowRepresentedObject: function(representedObject)
+ {
+ return representedObject instanceof WebInspector.DOMStorageObject || representedObject instanceof WebInspector.CookieStorageObject ||
+ representedObject instanceof WebInspector.DatabaseTableObject || representedObject instanceof WebInspector.DatabaseObject ||
+ representedObject instanceof WebInspector.ApplicationCacheFrame || representedObject instanceof WebInspector.IndexedDatabaseObjectStore ||
+ representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex;
+ }
+};
+
+WebInspector.StorageTabContentView.Type = "storage";
</ins></span></pre>
</div>
</div>
</body>
</html>