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

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

Issue 984963004: <webview>: Implement fullscreen permission for html5 element.requestFullscreen() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@tmptmptmp
Patch Set: Created 5 years, 9 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: extensions/browser/guest_view/web_view/web_view_guest.cc
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc
index 8b9bfb0391399deca42ff8a2b7724d372417e117..ba5b0ccd1687b1d6728e78419cbedc34f3ac7972 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -220,6 +220,61 @@ bool WebViewGuest::CanRunInDetachedState() const {
return true;
}
+void WebViewGuest::EnterFullscreenModeForTab(
+ content::WebContents* web_contents, const GURL& origin) {
+ printf("++++ %s\n", __PRETTY_FUNCTION__);
+ base::DictionaryValue request_info;
+ request_info.SetString(guestview::kUrl, origin.spec());
+ web_view_permission_helper_->RequestPermission(
+ WEB_VIEW_PERMISSION_TYPE_FULLSCREEN,
+ request_info,
+ base::Bind(&WebViewGuest::OnFullscreenPermissionDecided,
+ weak_ptr_factory_.GetWeakPtr(),
+ origin),
+ false /* allowed_by_default */);
+}
+
+void WebViewGuest::OnFullscreenPermissionDecided(
+ const GURL& origin,
+ bool allowed,
+ const std::string& user_input) {
+ printf("________ %s, allowed: %d\n", __PRETTY_FUNCTION__, allowed);
+ // TODO: Explain.
+ is_fullscreen_ = true;
+ if (allowed) {
Fady Samuel 2015/03/13 01:43:06 Only do this if attached.
+ // Ask the embedder to go fullscreen.
+ owner_web_contents()->GetDelegate()->EnterFullscreenModeForTab(
+ web_contents(), origin);
+ }
+}
+
+void WebViewGuest::ExitFullscreenModeForTab(content::WebContents* web_contents) {
+ printf("+++ %s\n", __PRETTY_FUNCTION__);
+ bool was_fullscren = is_fullscreen_;
+ is_fullscreen_ = false;
+
+ if (was_fullscren) {
+ scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
+ args->SetString(guestview::kUrl, "teststuff");
+ DispatchEventToView(
+ new GuestViewBase::Event(webview::kEventExitFullscreen, args.Pass()));
+ }
+}
+
+bool WebViewGuest::IsFullscreenForTabOrPending(
+ const content::WebContents* web_contents) const {
+ return is_fullscreen_;
+}
+
+void WebViewGuest::EmbedderFullscreenToggled(
+ bool entered_fullscreen) {
+ printf("____ %s, entered_fullscreen: %d\n",
+ __PRETTY_FUNCTION__, entered_fullscreen);
+ if (!entered_fullscreen) {
+ is_fullscreen_ = false;
+ }
+}
+
void WebViewGuest::CreateWebContents(
const base::DictionaryValue& create_params,
const WebContentsCreatedCallback& callback) {
@@ -651,6 +706,7 @@ WebViewGuest::WebViewGuest(content::WebContents* owner_web_contents)
javascript_dialog_helper_(this),
current_zoom_factor_(1.0),
allow_scaling_(false),
+ is_fullscreen_(false),
weak_ptr_factory_(this) {
web_view_guest_delegate_.reset(
ExtensionsAPIClient::Get()->CreateWebViewGuestDelegate(this));

Powered by Google App Engine
This is Rietveld 408576698