diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-04 01:56:42 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-04 01:56:42 +0000 |
commit | 1d5222071e5876b345e84d475573ef5db14ba1b4 (patch) | |
tree | 175872c72f290f4e89fd49724fbe6d085a379769 /chrome/browser/extensions | |
parent | f25810a9541a15facf4252236432335629d10e50 (diff) | |
download | chromium_src-1d5222071e5876b345e84d475573ef5db14ba1b4.zip chromium_src-1d5222071e5876b345e84d475573ef5db14ba1b4.tar.gz chromium_src-1d5222071e5876b345e84d475573ef5db14ba1b4.tar.bz2 |
Callbacks through ChromeClient->RenderView->RenderViewHost for ContentsDidChangeSize so that extensions can change their toolbar size when the contained contents changes size.
Review URL: http://codereview.chromium.org/56122
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13130 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rwxr-xr-x | chrome/browser/extensions/extension_view.cc | 34 | ||||
-rwxr-xr-x | chrome/browser/extensions/extension_view.h | 3 |
2 files changed, 35 insertions, 2 deletions
diff --git a/chrome/browser/extensions/extension_view.cc b/chrome/browser/extensions/extension_view.cc index a9b3ed0..11c33cf 100755 --- a/chrome/browser/extensions/extension_view.cc +++ b/chrome/browser/extensions/extension_view.cc @@ -19,8 +19,38 @@ ExtensionView::ExtensionView(Extension* extension, : HWNDHtmlView(url, this, false), extension_(extension), profile_(profile) { - // TODO(mpcomplete): query this from the renderer somehow? - set_preferred_size(gfx::Size(100, 100)); + // Set the width initially to 0, so that the WebCore::Document can + // correctly compute the minPrefWidth which is returned in + // DidContentsChangeSize() + set_preferred_size(gfx::Size(0, 100)); + SetVisible(false); +} + +void ExtensionView::DidStopLoading(RenderViewHost* render_view_host, + int32 page_id) { + SetVisible(true); + render_view_host->WasResized(); +} + +void ExtensionView::DidContentsPreferredWidthChange(const int pref_width) { + if (pref_width > 0) { + // SchedulePaint first because new_width may be smaller and we want + // the Parent to paint the vacated space. + SchedulePaint(); + set_preferred_size(gfx::Size(pref_width, 100)); + SizeToPreferredSize(); + + // TODO(rafaelw): This assumes that the extension view is a child of an + // ExtensionToolstrip, which is a child of the BookmarkBarView. There should + // be a way to do this where the ExtensionView doesn't have to know it's + // containment hierarchy. + if (GetParent() != NULL && GetParent()->GetParent() != NULL) { + GetParent()->GetParent()->Layout(); + } + + SchedulePaint(); + render_view_host()->WasResized(); + } } void ExtensionView::CreatingRenderer() { diff --git a/chrome/browser/extensions/extension_view.h b/chrome/browser/extensions/extension_view.h index e82c918..960a294 100755 --- a/chrome/browser/extensions/extension_view.h +++ b/chrome/browser/extensions/extension_view.h @@ -33,6 +33,9 @@ class ExtensionView : public HWNDHtmlView, // RenderViewHostDelegate virtual Profile* GetProfile() const { return profile_; } virtual void RenderViewCreated(RenderViewHost* render_view_host); + virtual void DidContentsPreferredWidthChange(const int pref_width); + virtual void DidStopLoading(RenderViewHost* render_view_host, + int32 page_id); virtual WebPreferences GetWebkitPrefs(); virtual void RunJavaScriptMessage( const std::wstring& message, |