add fullscreen permission type
This commit is contained in:
parent
45eada306f
commit
b575cd0ef9
6 changed files with 30 additions and 5 deletions
|
@ -390,6 +390,18 @@ void WebContents::HandleKeyboardEvent(
|
||||||
|
|
||||||
void WebContents::EnterFullscreenModeForTab(content::WebContents* source,
|
void WebContents::EnterFullscreenModeForTab(content::WebContents* source,
|
||||||
const GURL& origin) {
|
const GURL& origin) {
|
||||||
|
auto permission_helper =
|
||||||
|
WebContentsPermissionHelper::FromWebContents(source);
|
||||||
|
auto callback = base::Bind(&WebContents::OnEnterFullscreenModeForTab,
|
||||||
|
base::Unretained(this), source, origin);
|
||||||
|
permission_helper->RequestFullscreenPermission(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebContents::OnEnterFullscreenModeForTab(content::WebContents* source,
|
||||||
|
const GURL& origin,
|
||||||
|
bool allowed) {
|
||||||
|
if (!allowed)
|
||||||
|
return;
|
||||||
CommonWebContentsDelegate::EnterFullscreenModeForTab(source, origin);
|
CommonWebContentsDelegate::EnterFullscreenModeForTab(source, origin);
|
||||||
Emit("enter-html-full-screen");
|
Emit("enter-html-full-screen");
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,6 +133,11 @@ class WebContents : public mate::TrackableObject<WebContents>,
|
||||||
void SetAllowTransparency(bool allow);
|
void SetAllowTransparency(bool allow);
|
||||||
bool IsGuest() const;
|
bool IsGuest() const;
|
||||||
|
|
||||||
|
// Callback triggered on permission response.
|
||||||
|
void OnEnterFullscreenModeForTab(content::WebContents* source,
|
||||||
|
const GURL& origin,
|
||||||
|
bool allowed);
|
||||||
|
|
||||||
// Returns the web preferences of current WebContents.
|
// Returns the web preferences of current WebContents.
|
||||||
v8::Local<v8::Value> GetWebPreferences(v8::Isolate* isolate);
|
v8::Local<v8::Value> GetWebPreferences(v8::Isolate* isolate);
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,12 @@ void WebContentsPermissionHelper::RequestPermission(
|
||||||
base::Bind(&OnPermissionResponse, callback));
|
base::Bind(&OnPermissionResponse, callback));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebContentsPermissionHelper::RequestFullscreenPermission(
|
||||||
|
const base::Callback<void(bool)>& callback) {
|
||||||
|
RequestPermission((content::PermissionType)(PermissionType::FULLSCREEN),
|
||||||
|
callback);
|
||||||
|
}
|
||||||
|
|
||||||
void WebContentsPermissionHelper::RequestMediaAccessPermission(
|
void WebContentsPermissionHelper::RequestMediaAccessPermission(
|
||||||
const content::MediaStreamRequest& request,
|
const content::MediaStreamRequest& request,
|
||||||
const content::MediaResponseCallback& response_callback) {
|
const content::MediaResponseCallback& response_callback) {
|
||||||
|
|
|
@ -22,6 +22,8 @@ class WebContentsPermissionHelper
|
||||||
FULLSCREEN
|
FULLSCREEN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void RequestFullscreenPermission(
|
||||||
|
const base::Callback<void(bool)>& callback);
|
||||||
void RequestMediaAccessPermission(
|
void RequestMediaAccessPermission(
|
||||||
const content::MediaStreamRequest& request,
|
const content::MediaStreamRequest& request,
|
||||||
const content::MediaResponseCallback& callback);
|
const content::MediaResponseCallback& callback);
|
||||||
|
|
|
@ -293,22 +293,22 @@ myWindow.webContents.session.setCertificateVerifyProc(function(hostname, cert, c
|
||||||
|
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `webContents` Object - [WebContents](web-contents.md) requesting the permission.
|
* `webContents` Object - [WebContents](web-contents.md) requesting the permission.
|
||||||
* `permission` String - Enum of 'media', 'geolocation', 'notifications', 'midiSysex'.
|
* `permission` String - Enum of 'media', 'geolocation', 'notifications', 'midiSysex', 'pointerLock', 'fullscreen'.
|
||||||
* `callback` Function - Allow or deny the permission.
|
* `callback` Function - Allow or deny the permission.
|
||||||
|
|
||||||
Sets the handler which can be used to respond to permission requests for the `session`.
|
Sets the handler which can be used to respond to permission requests for the `session`.
|
||||||
Calling `callback('granted')` will allow the permission and `callback('denied')` will reject it.
|
Calling `callback(true)` will allow the permission and `callback(false)` will reject it.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
session.fromPartition(partition).setPermissionRequestHandler(function(webContents, permission, callback) {
|
session.fromPartition(partition).setPermissionRequestHandler(function(webContents, permission, callback) {
|
||||||
if (webContents.getURL() === host) {
|
if (webContents.getURL() === host) {
|
||||||
if (permission == "notifications") {
|
if (permission == "notifications") {
|
||||||
callback(); // denied.
|
callback(false); // denied.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
callback('granted');
|
callback(true);
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -639,7 +639,7 @@ describe('<webview> tag', function() {
|
||||||
var listener = function(webContents, permission, callback) {
|
var listener = function(webContents, permission, callback) {
|
||||||
if (webContents.getId() === webview.getId() ) {
|
if (webContents.getId() === webview.getId() ) {
|
||||||
assert.equal(permission, requested_permission);
|
assert.equal(permission, requested_permission);
|
||||||
callback("denied");
|
callback(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
session.fromPartition(webview.partition).setPermissionRequestHandler(listener);
|
session.fromPartition(webview.partition).setPermissionRequestHandler(listener);
|
||||||
|
|
Loading…
Reference in a new issue