Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2642)

Unified Diff: chrome/browser/guest_view/web_view/web_view_guest.cc

Issue 427883002: <webview>: Move autosize from content to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_frame_url
Patch Set: Initialize variable Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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())
« no previous file with comments | « chrome/browser/guest_view/web_view/web_view_guest.h ('k') | chrome/common/extensions/api/guest_view_internal.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698