Merge pull request #787 from atom/webview-plugins

Add "plugins" attribute for <webview>
This commit is contained in:
Cheng Zhao 2014-11-05 15:18:19 +08:00
commit e004d53d2a
7 changed files with 21 additions and 6 deletions

View file

@ -154,6 +154,8 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
command_line->AppendSwitchASCII(
switches::kNodeIntegration,
info.node_integration ? "true" : "false");
if (info.plugins)
command_line->AppendSwitch(switches::kEnablePlugins);
}
}

View file

@ -33,7 +33,7 @@ createGuest = (embedder, params) ->
guestInstanceId: id
storagePartitionId: params.storagePartitionId
guestInstances[id] = {guest, embedder}
webViewManager.addGuest id, embedder, guest, params.nodeIntegration
webViewManager.addGuest id, embedder, guest, params.nodeIntegration, params.plugins
# Destroy guest when the embedder is gone.
embedder.once 'render-view-deleted', ->

View file

@ -43,11 +43,12 @@ WebViewManager::~WebViewManager() {
void WebViewManager::AddGuest(int guest_instance_id,
content::WebContents* embedder,
content::WebContents* web_contents,
bool node_integration) {
bool node_integration,
bool plugins) {
web_contents_map_[guest_instance_id] = { web_contents, embedder };
WebViewRendererState::WebViewInfo web_view_info = {
guest_instance_id, node_integration
guest_instance_id, node_integration, plugins
};
content::BrowserThread::PostTask(
content::BrowserThread::IO,

View file

@ -23,7 +23,8 @@ class WebViewManager : public content::BrowserPluginGuestManager {
void AddGuest(int guest_instance_id,
content::WebContents* embedder,
content::WebContents* web_contents,
bool node_integration);
bool node_integration,
bool plugins);
void RemoveGuest(int guest_instance_id);
protected:

View file

@ -22,6 +22,7 @@ class WebViewRendererState {
struct WebViewInfo {
int guest_instance_id;
bool node_integration;
bool plugins;
};
static WebViewRendererState* GetInstance();

View file

@ -20,6 +20,7 @@ WEB_VIEW_ATTRIBUTE_MINHEIGHT = 'minheight'
WEB_VIEW_ATTRIBUTE_MINWIDTH = 'minwidth'
WEB_VIEW_ATTRIBUTE_PARTITION = 'partition'
WEB_VIEW_ATTRIBUTE_NODEINTEGRATION = 'nodeintegration'
WEB_VIEW_ATTRIBUTE_PLUGINS = 'plugins'
AUTO_SIZE_ATTRIBUTES = [
WEB_VIEW_ATTRIBUTE_AUTOSIZE,
WEB_VIEW_ATTRIBUTE_MAXHEIGHT,
@ -377,6 +378,7 @@ class WebView
params =
storagePartitionId: storagePartitionId
nodeIntegration: @webviewNode.hasAttribute WEB_VIEW_ATTRIBUTE_NODEINTEGRATION
plugins: @webviewNode.hasAttribute WEB_VIEW_ATTRIBUTE_PLUGINS
guestViewInternal.createGuest 'webview', params, (guestInstanceId) =>
@pendingGuestCreation = false
unless @elementAttached

View file

@ -50,7 +50,7 @@ and displays a "loading..." message during the load time:
### src
```html
<webview src="http://www.google.com/"></webview>
<webview src="https://www.github.com/"></webview>
```
Returns the visible URL. Writing to this attribute initiates top-level
@ -64,7 +64,7 @@ The `src` attribute can also accept data URLs, such as
### autosize
```html
<webview src="http://www.google.com/" autosize="on" minwidth="576" minheight="432"></webview>
<webview src="https://www.github.com/" autosize="on" minwidth="576" minheight="432"></webview>
```
If "on", the `webview` will container will automatically resize within the
@ -82,6 +82,14 @@ than the minimum values or greater than the maximum.
If "on", the guest page in `webview` will have node integration and can use node
APIs like `require` and `process` to access low level system resources.
### plugins
```html
<webview src="https://www.github.com/" plugins></webview>
```
If "on", the guest page in `webview` will be able to use browser plugins.
## Methods
### `<webview>`.getUrl()