summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorerikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-16 14:57:25 +0000
committererikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-16 14:57:25 +0000
commitab32b16c9acd73a2f2d2a92f1e8e5083b51b3953 (patch)
treee3910fea8522ea0a6e34d30b40a0a659c4a9d93f /chrome/renderer
parent357ff69d8564f44ffb7eb8ff3214d9cf7885dd63 (diff)
downloadchromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.zip
chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.tar.gz
chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.tar.bz2
Popup width and height are now dynamic.
BUG=24471 TEST=none Review URL: http://codereview.chromium.org/273046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29274 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/render_view.cc32
-rw-r--r--chrome/renderer/render_view.h12
2 files changed, 25 insertions, 19 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index dce72c2..d2130c6 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -227,8 +227,7 @@ RenderView::RenderView(RenderThreadBase* render_thread,
popup_notification_visible_(false),
spelling_panel_visible_(false),
delay_seconds_for_form_state_sync_(kDefaultDelaySecondsForFormStateSync),
- preferred_width_(0),
- send_preferred_width_changes_(false),
+ send_preferred_size_changes_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(
notification_provider_(new NotificationProvider(this))),
determine_page_text_after_loading_stops_(false),
@@ -475,8 +474,8 @@ void RenderView::OnMessageReceived(const IPC::Message& message) {
OnExtensionMessageInvoke)
IPC_MESSAGE_HANDLER(ViewMsg_ClearFocusedNode, OnClearFocusedNode)
IPC_MESSAGE_HANDLER(ViewMsg_SetBackground, OnSetBackground)
- IPC_MESSAGE_HANDLER(ViewMsg_EnableIntrinsicWidthChangedMode,
- OnEnableIntrinsicWidthChangedMode)
+ IPC_MESSAGE_HANDLER(ViewMsg_EnablePreferredSizeChangedMode,
+ OnEnablePreferredSizeChangedMode)
IPC_MESSAGE_HANDLER(ViewMsg_SetRendererPrefs, OnSetRendererPrefs)
IPC_MESSAGE_HANDLER(ViewMsg_UpdateBrowserWindowId,
OnUpdateBrowserWindowId)
@@ -2366,16 +2365,23 @@ void RenderView::didCreateIsolatedScriptContext(WebFrame* frame) {
void RenderView::didChangeContentsSize(WebFrame* frame, const WebSize& size) {
// We don't always want to send the change messages over IPC, only if we've
- // be put in that mode by getting a |ViewMsg_EnableIntrinsicWidthChangedMode|
+ // be put in that mode by getting a |ViewMsg_EnablePreferredSizeChangedMode|
// message.
- if (send_preferred_width_changes_) {
+ if (send_preferred_size_changes_) {
// WebCore likes to tell us things have changed even when they haven't, so
- // cache the width and only send the IPC message when we're sure the
- // width is different.
+ // cache the width and height and only send the IPC message when we're sure
+ // they're different.
int width = webview()->mainFrame()->contentsPreferredWidth();
- if (width != preferred_width_) {
- Send(new ViewHostMsg_DidContentsPreferredWidthChange(routing_id_, width));
- preferred_width_ = width;
+ if (width != preferred_size_.width() ||
+ size.height != preferred_size_.height()) {
+ preferred_size_.set_width(width);
+
+ // TODO(erikkay) the contents size is not really the same as the
+ // preferred size. It's just the current size. This means that for
+ // height, it will only ever grow, it will never shrink.
+ preferred_size_.set_height(size.height);
+ Send(new ViewHostMsg_DidContentsPreferredSizeChange(routing_id_,
+ preferred_size_));
}
}
}
@@ -3027,8 +3033,8 @@ void RenderView::OnEnableViewSourceMode() {
main_frame->enableViewSourceMode(true);
}
-void RenderView::OnEnableIntrinsicWidthChangedMode() {
- send_preferred_width_changes_ = true;
+void RenderView::OnEnablePreferredSizeChangedMode() {
+ send_preferred_size_changes_ = true;
}
void RenderView::OnSetRendererPrefs(const RendererPreferences& renderer_prefs) {
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index d0808e9..ca7d38e 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -601,7 +601,7 @@ class RenderView : public RenderWidget,
void OnInstallMissingPlugin();
void OnFileChooserResponse(const std::vector<FilePath>& file_names);
void OnEnableViewSourceMode();
- void OnEnableIntrinsicWidthChangedMode();
+ void OnEnablePreferredSizeChangedMode();
void OnSetRendererPrefs(const RendererPreferences& renderer_prefs);
void OnMediaPlayerActionAt(const gfx::Point& location,
const WebKit::WebMediaPlayerAction& action);
@@ -901,12 +901,12 @@ class RenderView : public RenderWidget,
// it's for the selection clipboard.
std::string selection_text_;
- // Cache the preferred width of the page in order to prevent sending the IPC
- // when layout() recomputes it but it doesn't actually change.
- int preferred_width_;
+ // Cache the preferred size of the page in order to prevent sending the IPC
+ // when layout() recomputes but doesn't actually change sizes.
+ gfx::Size preferred_size_;
- // If true, we send IPC messages when the preferred width changes.
- bool send_preferred_width_changes_;
+ // If true, we send IPC messages when |preferred_size_| changes.
+ bool send_preferred_size_changes_;
// The text selection the last time DidChangeSelection got called.
std::string last_selection_;