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

Side by Side Diff: chrome/browser/guestview/webview/webview_guest.cc

Issue 24576003: <webview>: Change how plugin load works inside guests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/guestview/webview/webview_guest.h" 5 #include "chrome/browser/guestview/webview/webview_guest.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "chrome/browser/extensions/api/web_request/web_request_api.h" 8 #include "chrome/browser/extensions/api/web_request/web_request_api.h"
9 #include "chrome/browser/extensions/extension_renderer_state.h" 9 #include "chrome/browser/extensions/extension_renderer_state.h"
10 #include "chrome/browser/extensions/script_executor.h" 10 #include "chrome/browser/extensions/script_executor.h"
11 #include "chrome/browser/favicon/favicon_tab_helper.h" 11 #include "chrome/browser/favicon/favicon_tab_helper.h"
12 #include "chrome/browser/guestview/guestview_constants.h" 12 #include "chrome/browser/guestview/guestview_constants.h"
13 #include "chrome/browser/guestview/webview/webview_constants.h" 13 #include "chrome/browser/guestview/webview/webview_constants.h"
14 #include "chrome/browser/guestview/webview/webview_permission_types.h"
14 #include "chrome/common/chrome_version_info.h" 15 #include "chrome/common/chrome_version_info.h"
15 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/native_web_keyboard_event.h" 17 #include "content/public/browser/native_web_keyboard_event.h"
17 #include "content/public/browser/notification_details.h" 18 #include "content/public/browser/notification_details.h"
18 #include "content/public/browser/notification_source.h" 19 #include "content/public/browser/notification_source.h"
19 #include "content/public/browser/notification_types.h" 20 #include "content/public/browser/notification_types.h"
20 #include "content/public/browser/render_process_host.h" 21 #include "content/public/browser/render_process_host.h"
21 #include "content/public/browser/resource_request_details.h" 22 #include "content/public/browser/resource_request_details.h"
22 #include "content/public/browser/storage_partition.h" 23 #include "content/public/browser/storage_partition.h"
23 #include "content/public/browser/user_metrics.h" 24 #include "content/public/browser/user_metrics.h"
24 #include "content/public/browser/web_contents.h" 25 #include "content/public/browser/web_contents.h"
25 #include "content/public/common/content_switches.h" 26 #include "content/public/common/content_switches.h"
26 #include "content/public/common/result_codes.h" 27 #include "content/public/common/result_codes.h"
27 #include "net/base/net_errors.h" 28 #include "net/base/net_errors.h"
28 29
30 #if defined(ENABLE_PLUGINS)
31 #include "chrome/browser/guestview/webview/plugin_permission_helper.h"
32 #endif
33
29 using content::WebContents; 34 using content::WebContents;
30 35
31 namespace { 36 namespace {
32 37
33 static std::string TerminationStatusToString(base::TerminationStatus status) { 38 static std::string TerminationStatusToString(base::TerminationStatus status) {
34 switch (status) { 39 switch (status) {
35 case base::TERMINATION_STATUS_NORMAL_TERMINATION: 40 case base::TERMINATION_STATUS_NORMAL_TERMINATION:
36 return "normal"; 41 return "normal";
37 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: 42 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION:
38 case base::TERMINATION_STATUS_STILL_RUNNING: 43 case base::TERMINATION_STATUS_STILL_RUNNING:
(...skipping 17 matching lines...) Expand all
56 return webview::kPermissionTypeGeolocation; 61 return webview::kPermissionTypeGeolocation;
57 case BROWSER_PLUGIN_PERMISSION_TYPE_MEDIA: 62 case BROWSER_PLUGIN_PERMISSION_TYPE_MEDIA:
58 return webview::kPermissionTypeMedia; 63 return webview::kPermissionTypeMedia;
59 case BROWSER_PLUGIN_PERMISSION_TYPE_NEW_WINDOW: 64 case BROWSER_PLUGIN_PERMISSION_TYPE_NEW_WINDOW:
60 return webview::kPermissionTypeNewWindow; 65 return webview::kPermissionTypeNewWindow;
61 case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK: 66 case BROWSER_PLUGIN_PERMISSION_TYPE_POINTER_LOCK:
62 return webview::kPermissionTypePointerLock; 67 return webview::kPermissionTypePointerLock;
63 case BROWSER_PLUGIN_PERMISSION_TYPE_JAVASCRIPT_DIALOG: 68 case BROWSER_PLUGIN_PERMISSION_TYPE_JAVASCRIPT_DIALOG:
64 return webview::kPermissionTypeDialog; 69 return webview::kPermissionTypeDialog;
65 case BROWSER_PLUGIN_PERMISSION_TYPE_UNKNOWN: 70 case BROWSER_PLUGIN_PERMISSION_TYPE_UNKNOWN:
66 default:
67 NOTREACHED(); 71 NOTREACHED();
68 break; 72 break;
73 default: {
74 WebViewPermissionType webview = static_cast<WebViewPermissionType>(type);
75 switch (webview) {
76 case WEB_VIEW_PERMISSION_TYPE_LOAD_PLUGIN:
77 return webview::kPermissionTypeLoadPlugin;
78 }
79 NOTREACHED();
80 }
69 } 81 }
70 return std::string(); 82 return std::string();
71 } 83 }
72 84
73 void RemoveWebViewEventListenersOnIOThread( 85 void RemoveWebViewEventListenersOnIOThread(
74 void* profile, 86 void* profile,
75 const std::string& extension_id, 87 const std::string& extension_id,
76 int embedder_process_id, 88 int embedder_process_id,
77 int view_instance_id) { 89 int view_instance_id) {
78 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 90 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
79 ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners( 91 ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners(
80 profile, 92 profile,
81 extension_id, 93 extension_id,
82 embedder_process_id, 94 embedder_process_id,
83 view_instance_id); 95 view_instance_id);
84 } 96 }
85 97
86 void AttachWebViewHelpers(WebContents* contents) { 98 void AttachWebViewHelpers(WebContents* contents) {
87 FaviconTabHelper::CreateForWebContents(contents); 99 FaviconTabHelper::CreateForWebContents(contents);
100 #if defined(ENABLE_PLUGINS)
101 PluginPermissionHelper::CreateForWebContents(contents);
102 #endif
88 } 103 }
89 104
90 } // namespace 105 } // namespace
91 106
92 WebViewGuest::WebViewGuest(WebContents* guest_web_contents) 107 WebViewGuest::WebViewGuest(WebContents* guest_web_contents)
93 : GuestView(guest_web_contents), 108 : GuestView(guest_web_contents),
94 WebContentsObserver(guest_web_contents), 109 WebContentsObserver(guest_web_contents),
95 script_executor_(new extensions::ScriptExecutor(guest_web_contents, 110 script_executor_(new extensions::ScriptExecutor(guest_web_contents,
96 &script_observers_)), 111 &script_observers_)),
97 next_permission_request_id_(0), 112 next_permission_request_id_(0),
(...skipping 11 matching lines...) Expand all
109 124
110 // static 125 // static
111 WebViewGuest* WebViewGuest::From(int embedder_process_id, 126 WebViewGuest* WebViewGuest::From(int embedder_process_id,
112 int guest_instance_id) { 127 int guest_instance_id) {
113 GuestView* guest = GuestView::From(embedder_process_id, guest_instance_id); 128 GuestView* guest = GuestView::From(embedder_process_id, guest_instance_id);
114 if (!guest) 129 if (!guest)
115 return NULL; 130 return NULL;
116 return guest->AsWebView(); 131 return guest->AsWebView();
117 } 132 }
118 133
134 // static
135 WebViewGuest* WebViewGuest::FromWebContents(WebContents* contents) {
136 GuestView* guest = GuestView::FromWebContents(contents);
137 return guest ? guest->AsWebView() : NULL;
138 }
139
119 void WebViewGuest::Attach(WebContents* embedder_web_contents, 140 void WebViewGuest::Attach(WebContents* embedder_web_contents,
120 const std::string& extension_id, 141 const std::string& extension_id,
121 const base::DictionaryValue& args) { 142 const base::DictionaryValue& args) {
122 std::string user_agent_override; 143 std::string user_agent_override;
123 if (args.GetString(webview::kParameterUserAgentOverride, 144 if (args.GetString(webview::kParameterUserAgentOverride,
124 &user_agent_override)) { 145 &user_agent_override)) {
125 SetUserAgentOverride(user_agent_override); 146 SetUserAgentOverride(user_agent_override);
126 } else { 147 } else {
127 SetUserAgentOverride(""); 148 SetUserAgentOverride("");
128 } 149 }
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 520
500 void WebViewGuest::SizeChanged(const gfx::Size& old_size, 521 void WebViewGuest::SizeChanged(const gfx::Size& old_size,
501 const gfx::Size& new_size) { 522 const gfx::Size& new_size) {
502 scoped_ptr<DictionaryValue> args(new DictionaryValue()); 523 scoped_ptr<DictionaryValue> args(new DictionaryValue());
503 args->SetInteger(webview::kOldHeight, old_size.height()); 524 args->SetInteger(webview::kOldHeight, old_size.height());
504 args->SetInteger(webview::kOldWidth, old_size.width()); 525 args->SetInteger(webview::kOldWidth, old_size.width());
505 args->SetInteger(webview::kNewHeight, new_size.height()); 526 args->SetInteger(webview::kNewHeight, new_size.height());
506 args->SetInteger(webview::kNewWidth, new_size.width()); 527 args->SetInteger(webview::kNewWidth, new_size.width());
507 DispatchEvent(new GuestView::Event(webview::kEventSizeChanged, args.Pass())); 528 DispatchEvent(new GuestView::Event(webview::kEventSizeChanged, args.Pass()));
508 } 529 }
OLDNEW
« 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