Chromium Code Reviews| 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..67a01e44e7ed0aff3f6c887b752088d353a43518 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::IsAutoSizeEnabled() 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() { |
|
lazyboy
2014/08/01 20:26:04
nit: s/SetupAutoSize/SetUpAutoSize
Fady Samuel
2014/08/01 20:44:41
Done.
|
| + // Read the autosize parameters passed in from the embedder. |
| + bool auto_size_enabled; |
| + 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()) |