Index: chrome/browser/guest_view/web_view/web_view_guest.cc |
diff --git a/chrome/browser/guest_view/web_view/web_view_guest.cc b/chrome/browser/guest_view/web_view/web_view_guest.cc |
index 88ff3ddf68abd3f61e9924c69d4e2d4694192a88..8ee9dcc596231ba8336bf8448b5b02b029fba101 100644 |
--- a/chrome/browser/guest_view/web_view/web_view_guest.cc |
+++ b/chrome/browser/guest_view/web_view/web_view_guest.cc |
@@ -297,6 +297,8 @@ void WebViewGuest::CreateWebContents( |
} |
void WebViewGuest::DidAttachToEmbedder() { |
+ SetUpAutoSize(); |
+ |
std::string name; |
if (extra_params()->GetString(webview::kName, &name)) { |
// If the guest window's name is empty, then the WebView tag's name is |
@@ -422,6 +424,27 @@ void WebViewGuest::GuestDestroyed() { |
RemoveWebViewStateFromIOThread(web_contents()); |
} |
+void WebViewGuest::GuestReady() { |
+ // The guest RenderView should always live in an isolated guest process. |
+ CHECK(guest_web_contents()->GetRenderProcessHost()->IsIsolatedGuest()); |
+ Send(new ChromeViewMsg_SetName(guest_web_contents()->GetRoutingID(), name_)); |
+} |
+ |
+void WebViewGuest::GuestSizeChangedDueToAutoSize(const gfx::Size& old_size, |
+ const gfx::Size& new_size) { |
+ scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
+ args->SetInteger(webview::kOldHeight, old_size.height()); |
+ args->SetInteger(webview::kOldWidth, old_size.width()); |
+ args->SetInteger(webview::kNewHeight, new_size.height()); |
+ args->SetInteger(webview::kNewWidth, new_size.width()); |
+ DispatchEventToEmbedder( |
+ new GuestViewBase::Event(webview::kEventSizeChanged, args.Pass())); |
+} |
+ |
+bool WebViewGuest::IsAutoSizeSupported() const { |
+ return true; |
+} |
+ |
bool WebViewGuest::IsDragAndDropEnabled() const { |
return true; |
} |
@@ -798,12 +821,6 @@ void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) { |
guest_web_contents()->GetController().Reload(false); |
} |
-void WebViewGuest::RenderViewReady() { |
- // The guest RenderView should always live in an isolated guest process. |
- CHECK(guest_web_contents()->GetRenderProcessHost()->IsIsolatedGuest()); |
- Send(new ChromeViewMsg_SetName(guest_web_contents()->GetRoutingID(), name_)); |
-} |
- |
void WebViewGuest::ReportFrameNameChange(const std::string& name) { |
name_ = name; |
scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
@@ -880,17 +897,6 @@ content::WebContents* WebViewGuest::CreateNewGuestWindow( |
create_params); |
} |
-void WebViewGuest::SizeChanged(const gfx::Size& old_size, |
- const gfx::Size& new_size) { |
- scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
- args->SetInteger(webview::kOldHeight, old_size.height()); |
- args->SetInteger(webview::kOldWidth, old_size.width()); |
- args->SetInteger(webview::kNewHeight, new_size.height()); |
- args->SetInteger(webview::kNewWidth, new_size.width()); |
- DispatchEventToEmbedder( |
- new GuestViewBase::Event(webview::kEventSizeChanged, args.Pass())); |
-} |
- |
void WebViewGuest::RequestMediaAccessPermission( |
content::WebContents* source, |
const content::MediaStreamRequest& request, |
@@ -1052,6 +1058,28 @@ bool WebViewGuest::HandleKeyboardShortcuts( |
return false; |
} |
+void WebViewGuest::SetUpAutoSize() { |
+ // Read the autosize parameters passed in from the embedder. |
+ bool auto_size_enabled = false; |
+ extra_params()->GetBoolean(webview::kAttributeAutoSize, &auto_size_enabled); |
+ |
+ int max_height = 0; |
+ int max_width = 0; |
+ extra_params()->GetInteger(webview::kAttributeMaxHeight, &max_height); |
+ extra_params()->GetInteger(webview::kAttributeMaxWidth, &max_width); |
+ |
+ int min_height = 0; |
+ int min_width = 0; |
+ extra_params()->GetInteger(webview::kAttributeMinHeight, &min_height); |
+ extra_params()->GetInteger(webview::kAttributeMinWidth, &min_width); |
+ |
+ // Call SetAutoSize to apply all the appropriate validation and clipping of |
+ // values. |
+ SetAutoSize(auto_size_enabled, |
+ gfx::Size(min_width, min_height), |
+ gfx::Size(max_width, max_height)); |
+} |
+ |
void WebViewGuest::ShowContextMenu(int request_id, |
const MenuItemVector* items) { |
if (!pending_menu_.get()) |