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

Unified Diff: chrome/browser/guestview/webview/webview_guest.cc

Issue 239113007: <webview>: Move pointerLock permission to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_downloads_to_chrome
Patch Set: Created 6 years, 8 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/guestview/webview/webview_guest.cc
diff --git a/chrome/browser/guestview/webview/webview_guest.cc b/chrome/browser/guestview/webview/webview_guest.cc
index 68890745c6908df8d78c37d410431ed4740de220..07865adc1be9be34226b0431d9ad6053fa7a3feb 100644
--- a/chrome/browser/guestview/webview/webview_guest.cc
+++ b/chrome/browser/guestview/webview/webview_guest.cc
@@ -79,8 +79,6 @@ static std::string PermissionTypeToString(BrowserPluginPermissionType type) {
switch (type) {
case BROWSER_PLUGIN_PERMISSION_TYPE_NEW_WINDOW:
return webview::kPermissionTypeNewWindow;
- case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK:
- return webview::kPermissionTypePointerLock;
case BROWSER_PLUGIN_PERMISSION_TYPE_JAVASCRIPT_DIALOG:
return webview::kPermissionTypeDialog;
case BROWSER_PLUGIN_PERMISSION_TYPE_UNKNOWN:
@@ -97,6 +95,8 @@ static std::string PermissionTypeToString(BrowserPluginPermissionType type) {
return webview::kPermissionTypeLoadPlugin;
case WEB_VIEW_PERMISSION_TYPE_MEDIA:
return webview::kPermissionTypeMedia;
+ case WEB_VIEW_PERMISSION_TYPE_POINTER_LOCK:
+ return webview::kPermissionTypePointerLock;
}
NOTREACHED();
}
@@ -193,10 +193,6 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
// scenario would be: an embedder allows geolocation request but doesn't
// have geolocation access on its own.
switch (info.permission_type) {
- case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK:
- content::RecordAction(
- UserMetricsAction("BrowserPlugin.PermissionAllow.PointerLock"));
- break;
case BROWSER_PLUGIN_PERMISSION_TYPE_NEW_WINDOW:
content::RecordAction(
UserMetricsAction("BrowserPlugin.PermissionAllow.NewWindow"));
@@ -211,6 +207,10 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
WebViewPermissionType webview_permission_type =
static_cast<WebViewPermissionType>(info.permission_type);
switch (webview_permission_type) {
+ case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD:
+ content::RecordAction(
+ UserMetricsAction("WebView.PermissionAllow.Download"));
+ break;
case WEB_VIEW_PERMISSION_TYPE_GEOLOCATION:
content::RecordAction(
UserMetricsAction("WebView.PermissionAllow.Geolocation"));
@@ -222,9 +222,9 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
content::RecordAction(
UserMetricsAction("WebView.PermissionAllow.Media"));
break;
- case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD:
+ case WEB_VIEW_PERMISSION_TYPE_POINTER_LOCK:
content::RecordAction(
- UserMetricsAction("WebView.PermissionAllow.Download"));
+ UserMetricsAction("WebView.PermissionAllow.PointerLock"));
break;
default:
break;
@@ -233,10 +233,6 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
}
} else {
switch (info.permission_type) {
- case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK:
- content::RecordAction(
- UserMetricsAction("BrowserPlugin.PermissionDeny.PointerLock"));
- break;
case BROWSER_PLUGIN_PERMISSION_TYPE_NEW_WINDOW:
content::RecordAction(
UserMetricsAction("BrowserPlugin.PermissionDeny.NewWindow"));
@@ -251,6 +247,10 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
WebViewPermissionType webview_permission_type =
static_cast<WebViewPermissionType>(info.permission_type);
switch (webview_permission_type) {
+ case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD:
+ content::RecordAction(
+ UserMetricsAction("WebView.PermissionDeny.Download"));
+ break;
case WEB_VIEW_PERMISSION_TYPE_GEOLOCATION:
content::RecordAction(
UserMetricsAction("WebView.PermissionDeny.Geolocation"));
@@ -262,9 +262,9 @@ void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
content::RecordAction(
UserMetricsAction("WebView.PermissionDeny.Media"));
break;
- case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD:
+ case WEB_VIEW_PERMISSION_TYPE_POINTER_LOCK:
content::RecordAction(
- UserMetricsAction("WebView.PermissionDeny.Download"));
+ UserMetricsAction("WebView.PermissionDeny.PointerLock"));
break;
default:
break;
@@ -616,6 +616,13 @@ void WebViewGuest::OnWebViewDownloadPermissionResponse(
callback.Run(allow && attached());
}
+void WebViewGuest::OnWebViewPointerLockPermissionResponse(
+ const base::Callback<void(bool)>& callback,
+ bool allow,
+ const std::string& user_input) {
+ callback.Run(allow && attached());
+}
+
WebViewGuest::SetPermissionResult WebViewGuest::SetPermission(
int request_id,
PermissionResponseAction action,
@@ -896,6 +903,29 @@ void WebViewGuest::CanDownload(
false /* allowed_by_default */);
}
+void WebViewGuest::RequestPointerLockPermission(
+ bool user_gesture,
+ bool last_unlocked_by_target,
+ const base::Callback<void(bool)>& callback) {
+ base::DictionaryValue request_info;
+ request_info.Set(guestview::kUserGesture,
+ base::Value::CreateBooleanValue(user_gesture));
+ request_info.Set(webview::kLastUnlockedBySelf,
+ base::Value::CreateBooleanValue(last_unlocked_by_target));
+ request_info.Set(guestview::kUrl,
+ base::Value::CreateStringValue(
+ guest_web_contents()->GetLastCommittedURL().spec()));
+
+ RequestPermission(
+ static_cast<BrowserPluginPermissionType>(
+ WEB_VIEW_PERMISSION_TYPE_POINTER_LOCK),
+ request_info,
+ base::Bind(&WebViewGuest::OnWebViewPointerLockPermissionResponse,
+ base::Unretained(this),
+ callback),
+ false /* allowed_by_default */);
+}
+
#if defined(OS_CHROMEOS)
void WebViewGuest::OnAccessibilityStatusChanged(
const chromeos::AccessibilityStatusEventDetails& details) {
« no previous file with comments | « chrome/browser/guestview/webview/webview_guest.h ('k') | chrome/browser/guestview/webview/webview_permission_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698