[webkit-reviews] review denied: [Bug 122546] Web Inspector: inspector forgets open navigation sidebar when re-opening : [Attachment 213774] v1

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Oct 9 14:35:04 PDT 2013


Timothy Hatcher <timothy at apple.com> has denied Brian Burg
<burg at cs.washington.edu>'s request for review:
Bug 122546: Web Inspector: inspector forgets open navigation sidebar when
re-opening
https://bugs.webkit.org/show_bug.cgi?id=122546

Attachment 213774: v1
https://bugs.webkit.org/attachment.cgi?id=213774&action=review

------- Additional Comments from Timothy Hatcher <timothy at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=213774&action=review


Looks good. Just fix up the layering violations.

> Source/WebInspectorUI/UserInterface/ApplicationCacheManager.js:115
> +	   return (matchOnTypeAlone && this._applicationCacheObjects.length) ?
this._applicationCacheObjects[0] : null;

No need for the ( ).

> Source/WebInspectorUI/UserInterface/ContentBrowser.js:78
> +    // These listeners are for events that could resolve a pending content
view cookie.
> +   
WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationC
acheManager.Event.FrameManifestAdded,
this._resolveAndShowPendingContentViewCookie, this);
> +   
WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceMa
nager.Event.MainFrameDidChange, this._resolveAndShowPendingContentViewCookie,
this);
> +   
WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.
DatabaseWasAdded, this._resolveAndShowPendingContentViewCookie, this);
> +   
WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.
CookieStorageObjectWasAdded, this._resolveAndShowPendingContentViewCookie,
this);
> +   
WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.
DOMStorageObjectWasAdded, this._resolveAndShowPendingContentViewCookie, this);

This is a layering violation. Moving this to Main.js and possibly calling into
a public function on ContentBrowser for generic logic would be best.

> Source/WebInspectorUI/UserInterface/ContentBrowser.js:577
> +    _resolveAndShowPendingContentViewCookie: function(matchOnTypeAlone)
> +    {
> +	   var cookie = this._pendingContentViewCookie;
> +	   if (!cookie)
> +	       return false;
> +
> +	   var representedObject = null;
> +
> +	   if (cookie.type ===
WebInspector.ContentView.ResourceContentViewCookieType)
> +	       representedObject =
WebInspector.frameResourceManager.objectForCookie(cookie);
> +
> +	   if (cookie.type ===
WebInspector.ContentView.TimelinesContentViewCookieType)
> +	       representedObject =
WebInspector.timelineManager.objectForCookie(cookie);
> +
> +	   if (cookie.type ===
WebInspector.ContentView.CookieStorageContentViewCookieType || cookie.type ===
WebInspector.ContentView.DatabaseContentViewCookieType	|| cookie.type ===
WebInspector.ContentView.DatabaseTableContentViewCookieType || cookie.type ===
WebInspector.ContentView.DOMStorageContentViewCookieType)
> +	       representedObject =
WebInspector.storageManager.objectForCookie(this._pendingContentViewCookie,
matchOnTypeAlone);
> +
> +	   if (cookie.type ===
WebInspector.ContentView.ApplicationCacheContentViewCookieType)
> +	       representedObject =
WebInspector.applicationCacheManager.objectForCookie(this._pendingContentViewCo
okie, matchOnTypeAlone);
> +
> +	   if (!representedObject)
> +	       return false;
> +
> +	   // If we reached this point, then we should be able to create and/or
display a content view based on the cookie.
> +	   delete this._pendingContentViewCookie;
> +	   if (this._lastAttemptCookieCheckingTimeout)
> +	       clearTimeout(this._lastAttemptCookieCheckingTimeout);
> +
> +	   // Delay this work because other listeners of the originating event
might not have fired yet.
> +	   // So displaying the content view before those listeners do their
work might cause the
> +	   // dependent view states (navigation sidebar tree elements, path
components) to be wrong.
> +	   function delayedWork()
> +	   {
> +	       this.showContentViewForRepresentedObject(representedObject,
cookie);
> +	   }
> +	   setTimeout(delayedWork.bind(this), 0);
> +	   return true;
> +    },

This should also move to Main.js since it touches many high level classes that
ContentBrowser should not know about.

> Source/WebInspectorUI/UserInterface/ContentView.js:105
> +WebInspector.ContentView.ApplicationCacheContentViewCookieType =
"application-cache";
> +WebInspector.ContentView.CookieStorageContentViewCookieType =
"cookie-storage";
> +WebInspector.ContentView.DatabaseContentViewCookieType = "database";
> +WebInspector.ContentView.DatabaseTableContentViewCookieType =
"database-table";
> +WebInspector.ContentView.DOMStorageContentViewCookieType = "dom-storage";
> +WebInspector.ContentView.TimelinesContentViewCookieType = "timeline";
> +WebInspector.ContentView.ResourceContentViewCookieType = "resource"; //
includes Frame too.

This is also a layering violation. Main.js would be best. Also this format
would be better and more like an enum:

WebInspector.ContentVIewCookieType = {
    ApplicationCache: "application-cache",
    ...
};


More information about the webkit-reviews mailing list