diff options
author | Ben Murdoch <benm@google.com> | 2009-08-11 17:01:47 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2009-08-11 18:21:02 +0100 |
commit | 0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5 (patch) | |
tree | 2943df35f62d885c89d01063cc528dd73b480fea /WebCore/inspector/front-end/DatabasesPanel.js | |
parent | 7e7a70bfa49a1122b2597a1e6367d89eb4035eca (diff) | |
download | external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.zip external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.gz external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.bz2 |
Merge in WebKit r47029.
Diffstat (limited to 'WebCore/inspector/front-end/DatabasesPanel.js')
-rw-r--r-- | WebCore/inspector/front-end/DatabasesPanel.js | 86 |
1 files changed, 84 insertions, 2 deletions
diff --git a/WebCore/inspector/front-end/DatabasesPanel.js b/WebCore/inspector/front-end/DatabasesPanel.js index 4644b3b..a31e3ff 100644 --- a/WebCore/inspector/front-end/DatabasesPanel.js +++ b/WebCore/inspector/front-end/DatabasesPanel.js @@ -1,5 +1,6 @@ /* * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2009 Joseph Pecoraro * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -85,6 +86,7 @@ WebInspector.DatabasesPanel.prototype = { { WebInspector.Panel.prototype.show.call(this); this._updateSidebarWidth(); + this._registerStorageEventListener(); }, reset: function() @@ -101,6 +103,8 @@ WebInspector.DatabasesPanel.prototype = { this._databases = []; + this._unregisterStorageEventListener(); + if (this._domStorage) { var domStorageLength = this._domStorage.length; for (var i = 0; i < domStorageLength; ++i) { @@ -145,6 +149,32 @@ WebInspector.DatabasesPanel.prototype = { this.sessionStorageListTreeElement.appendChild(domStorageTreeElement); }, + selectDatabase: function(db) + { + var database; + for (var i = 0, len = this._databases.length; i < len; ++i) { + database = this._databases[i]; + if ( db === database.database ) { + this.showDatabase(database); + database._databasesTreeElement.select(); + return; + } + } + }, + + selectDOMStorage: function(s) + { + var isLocalStorage = (s === InspectorController.inspectedWindow().localStorage); + for (var i = 0, len = this._domStorage.length; i < len; ++i) { + var storage = this._domStorage[i]; + if ( isLocalStorage === storage.isLocalStorage ) { + this.showDOMStorage(storage); + storage._domStorageTreeElement.select(); + return; + } + } + }, + showDatabase: function(database, tableName) { if (!database) @@ -175,7 +205,7 @@ WebInspector.DatabasesPanel.prototype = { this.visibleView = view; this.storageViewStatusBarItemsContainer.removeChildren(); - var statusBarItems = view.statusBarItems; + var statusBarItems = view.statusBarItems || []; for (var i = 0; i < statusBarItems.length; ++i) this.storageViewStatusBarItemsContainer.appendChild(statusBarItems[i]); }, @@ -332,7 +362,7 @@ WebInspector.DatabasesPanel.prototype = { var nodes = []; var length = domStorage.length; - for (index = 0; index < domStorage.length; index++) { + for (var index = 0; index < domStorage.length; index++) { var data = {}; var key = String(domStorage.key(index)); @@ -365,10 +395,58 @@ WebInspector.DatabasesPanel.prototype = { var length = nodes.length; for (var i = 0; i < length; ++i) dataGrid.appendChild(nodes[i]); + dataGrid.addCreationNode(false); if (length > 0) nodes[0].selected = true; return dataGrid; }, + + resize: function() + { + var visibleView = this.visibleView; + if (visibleView && "resize" in visibleView) + visibleView.resize(); + }, + + _registerStorageEventListener: function() + { + var inspectedWindow = InspectorController.inspectedWindow(); + if (!inspectedWindow || !inspectedWindow.document) + return; + + this._storageEventListener = InspectorController.wrapCallback(this._storageEvent.bind(this)); + inspectedWindow.addEventListener("storage", this._storageEventListener, true); + }, + + _unregisterStorageEventListener: function() + { + if (!this._storageEventListener) + return; + + var inspectedWindow = InspectorController.inspectedWindow(); + if (!inspectedWindow || !inspectedWindow.document) + return; + + inspectedWindow.removeEventListener("storage", this._storageEventListener, true); + delete this._storageEventListener; + }, + + _storageEvent: function(event) + { + if (!this._domStorage) + return; + + var isLocalStorage = (event.storageArea === InspectorController.inspectedWindow().localStorage); + var domStorageLength = this._domStorage.length; + for (var i = 0; i < domStorageLength; ++i) { + var domStorage = this._domStorage[i]; + if (isLocalStorage === domStorage.isLocalStorage) { + var view = domStorage._domStorageView; + if (this.visibleView && view === this.visibleView) + domStorage._domStorageView.update(); + } + } + }, _startSidebarDragging: function(event) { @@ -409,6 +487,10 @@ WebInspector.DatabasesPanel.prototype = { this.storageViews.style.left = width + "px"; this.storageViewStatusBarItemsContainer.style.left = width + "px"; this.sidebarResizeElement.style.left = (width - 3) + "px"; + + var visibleView = this.visibleView; + if (visibleView && "resize" in visibleView) + visibleView.resize(); } } |