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

Side by Side Diff: chrome/renderer/render_view.cc

Issue 3717005: This adds a plugin selection policy for selecting allowed plugins (Closed)
Patch Set: fix win build Created 10 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/renderer/render_view.h" 5 #include "chrome/renderer/render_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "app/l10n_util.h"
12 #include "app/message_box_flags.h" 13 #include "app/message_box_flags.h"
13 #include "app/l10n_util.h"
14 #include "app/resource_bundle.h" 14 #include "app/resource_bundle.h"
15 #include "base/callback.h" 15 #include "base/callback.h"
16 #include "base/command_line.h" 16 #include "base/command_line.h"
17 #include "base/compiler_specific.h" 17 #include "base/compiler_specific.h"
18 #include "base/metrics/field_trial.h" 18 #include "base/metrics/field_trial.h"
19 #include "base/metrics/histogram.h" 19 #include "base/metrics/histogram.h"
20 #include "base/path_service.h" 20 #include "base/path_service.h"
21 #include "base/process_util.h" 21 #include "base/process_util.h"
22 #include "base/singleton.h" 22 #include "base/singleton.h"
23 #include "base/string_piece.h" 23 #include "base/string_piece.h"
24 #include "base/string_util.h" 24 #include "base/string_util.h"
25 #include "base/sys_string_conversions.h"
25 #include "base/time.h" 26 #include "base/time.h"
26 #include "base/sys_string_conversions.h"
27 #include "base/utf_string_conversions.h" 27 #include "base/utf_string_conversions.h"
28 #include "build/build_config.h" 28 #include "build/build_config.h"
29 #include "chrome/common/appcache/appcache_dispatcher.h" 29 #include "chrome/common/appcache/appcache_dispatcher.h"
30 #include "chrome/common/bindings_policy.h" 30 #include "chrome/common/bindings_policy.h"
31 #include "chrome/common/child_process_logging.h" 31 #include "chrome/common/child_process_logging.h"
32 #include "chrome/common/chrome_constants.h" 32 #include "chrome/common/chrome_constants.h"
33 #include "chrome/common/chrome_paths.h" 33 #include "chrome/common/chrome_paths.h"
34 #include "chrome/common/chrome_switches.h" 34 #include "chrome/common/chrome_switches.h"
35 #include "chrome/common/extensions/extension.h" 35 #include "chrome/common/extensions/extension.h"
36 #include "chrome/common/file_system/file_system_dispatcher.h" 36 #include "chrome/common/file_system/file_system_dispatcher.h"
(...skipping 12 matching lines...) Expand all
49 #include "chrome/renderer/audio_message_filter.h" 49 #include "chrome/renderer/audio_message_filter.h"
50 #include "chrome/renderer/autofill_helper.h" 50 #include "chrome/renderer/autofill_helper.h"
51 #include "chrome/renderer/automation/dom_automation_controller.h" 51 #include "chrome/renderer/automation/dom_automation_controller.h"
52 #include "chrome/renderer/blocked_plugin.h" 52 #include "chrome/renderer/blocked_plugin.h"
53 #include "chrome/renderer/device_orientation_dispatcher.h" 53 #include "chrome/renderer/device_orientation_dispatcher.h"
54 #include "chrome/renderer/devtools_agent.h" 54 #include "chrome/renderer/devtools_agent.h"
55 #include "chrome/renderer/devtools_client.h" 55 #include "chrome/renderer/devtools_client.h"
56 #include "chrome/renderer/dom_ui_bindings.h" 56 #include "chrome/renderer/dom_ui_bindings.h"
57 #include "chrome/renderer/extension_groups.h" 57 #include "chrome/renderer/extension_groups.h"
58 #include "chrome/renderer/extensions/bindings_utils.h" 58 #include "chrome/renderer/extensions/bindings_utils.h"
59 #include "chrome/renderer/extensions/extension_renderer_info.h"
60 #include "chrome/renderer/extensions/event_bindings.h" 59 #include "chrome/renderer/extensions/event_bindings.h"
61 #include "chrome/renderer/extensions/extension_process_bindings.h" 60 #include "chrome/renderer/extensions/extension_process_bindings.h"
61 #include "chrome/renderer/extensions/extension_renderer_info.h"
62 #include "chrome/renderer/extensions/renderer_extension_bindings.h" 62 #include "chrome/renderer/extensions/renderer_extension_bindings.h"
63 #include "chrome/renderer/external_host_bindings.h" 63 #include "chrome/renderer/external_host_bindings.h"
64 #include "chrome/renderer/geolocation_dispatcher.h" 64 #include "chrome/renderer/geolocation_dispatcher.h"
65 #include "chrome/renderer/ggl/ggl.h" 65 #include "chrome/renderer/ggl/ggl.h"
66 #include "chrome/renderer/localized_error.h" 66 #include "chrome/renderer/localized_error.h"
67 #include "chrome/renderer/media/audio_renderer_impl.h" 67 #include "chrome/renderer/media/audio_renderer_impl.h"
68 #include "chrome/renderer/media/ipc_video_decoder.h" 68 #include "chrome/renderer/media/ipc_video_decoder.h"
69 #include "chrome/renderer/media/ipc_video_renderer.h" 69 #include "chrome/renderer/media/ipc_video_renderer.h"
70 #include "chrome/renderer/navigation_state.h" 70 #include "chrome/renderer/navigation_state.h"
71 #include "chrome/renderer/notification_provider.h" 71 #include "chrome/renderer/notification_provider.h"
(...skipping 22 matching lines...) Expand all
94 #include "gfx/point.h" 94 #include "gfx/point.h"
95 #include "gfx/rect.h" 95 #include "gfx/rect.h"
96 #include "grit/generated_resources.h" 96 #include "grit/generated_resources.h"
97 #include "grit/renderer_resources.h" 97 #include "grit/renderer_resources.h"
98 #include "media/base/media_switches.h" 98 #include "media/base/media_switches.h"
99 #include "net/base/data_url.h" 99 #include "net/base/data_url.h"
100 #include "net/base/escape.h" 100 #include "net/base/escape.h"
101 #include "net/base/net_errors.h" 101 #include "net/base/net_errors.h"
102 #include "skia/ext/bitmap_platform_device.h" 102 #include "skia/ext/bitmap_platform_device.h"
103 #include "skia/ext/image_operations.h" 103 #include "skia/ext/image_operations.h"
104 #include "third_party/cld/encodings/compact_lang_det/win/cld_unicodetext.h"
105 #include "third_party/skia/include/core/SkBitmap.h"
106 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" 104 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h"
107 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" 105 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h"
108 #include "third_party/WebKit/WebKit/chromium/public/WebCString.h" 106 #include "third_party/WebKit/WebKit/chromium/public/WebCString.h"
109 #include "third_party/WebKit/WebKit/chromium/public/WebDataSource.h" 107 #include "third_party/WebKit/WebKit/chromium/public/WebDataSource.h"
110 #include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h" 108 #include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h"
111 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" 109 #include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
112 #include "third_party/WebKit/WebKit/chromium/public/WebDragData.h" 110 #include "third_party/WebKit/WebKit/chromium/public/WebDragData.h"
113 #include "third_party/WebKit/WebKit/chromium/public/WebFileChooserParams.h" 111 #include "third_party/WebKit/WebKit/chromium/public/WebFileChooserParams.h"
114 #include "third_party/WebKit/WebKit/chromium/public/WebFindOptions.h"
115 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h" 112 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h"
116 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystemCallbacks.h" 113 #include "third_party/WebKit/WebKit/chromium/public/WebFileSystemCallbacks.h"
114 #include "third_party/WebKit/WebKit/chromium/public/WebFindOptions.h"
117 #include "third_party/WebKit/WebKit/chromium/public/WebFormControlElement.h" 115 #include "third_party/WebKit/WebKit/chromium/public/WebFormControlElement.h"
118 #include "third_party/WebKit/WebKit/chromium/public/WebFormElement.h" 116 #include "third_party/WebKit/WebKit/chromium/public/WebFormElement.h"
119 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" 117 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
120 #include "third_party/WebKit/WebKit/chromium/public/WebGraphicsContext3D.h" 118 #include "third_party/WebKit/WebKit/chromium/public/WebGraphicsContext3D.h"
121 #include "third_party/WebKit/WebKit/chromium/public/WebHistoryItem.h" 119 #include "third_party/WebKit/WebKit/chromium/public/WebHistoryItem.h"
122 #include "third_party/WebKit/WebKit/chromium/public/WebImage.h" 120 #include "third_party/WebKit/WebKit/chromium/public/WebImage.h"
123 #include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h" 121 #include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h"
124 #include "third_party/WebKit/WebKit/chromium/public/WebNode.h" 122 #include "third_party/WebKit/WebKit/chromium/public/WebNode.h"
125 #include "third_party/WebKit/WebKit/chromium/public/WebNodeList.h" 123 #include "third_party/WebKit/WebKit/chromium/public/WebNodeList.h"
126 #include "third_party/WebKit/WebKit/chromium/public/WebPageSerializer.h" 124 #include "third_party/WebKit/WebKit/chromium/public/WebPageSerializer.h"
127 #include "third_party/WebKit/WebKit/chromium/public/WebPlugin.h" 125 #include "third_party/WebKit/WebKit/chromium/public/WebPlugin.h"
128 #include "third_party/WebKit/WebKit/chromium/public/WebPluginContainer.h" 126 #include "third_party/WebKit/WebKit/chromium/public/WebPluginContainer.h"
127 #include "third_party/WebKit/WebKit/chromium/public/WebPluginDocument.h"
129 #include "third_party/WebKit/WebKit/chromium/public/WebPluginParams.h" 128 #include "third_party/WebKit/WebKit/chromium/public/WebPluginParams.h"
130 #include "third_party/WebKit/WebKit/chromium/public/WebPluginDocument.h"
131 #include "third_party/WebKit/WebKit/chromium/public/WebPoint.h" 129 #include "third_party/WebKit/WebKit/chromium/public/WebPoint.h"
132 #include "third_party/WebKit/WebKit/chromium/public/WebRange.h" 130 #include "third_party/WebKit/WebKit/chromium/public/WebRange.h"
133 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" 131 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h"
134 #include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h" 132 #include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h"
135 #include "third_party/WebKit/WebKit/chromium/public/WebSearchableFormData.h" 133 #include "third_party/WebKit/WebKit/chromium/public/WebSearchableFormData.h"
136 #include "third_party/WebKit/WebKit/chromium/public/WebSecurityOrigin.h" 134 #include "third_party/WebKit/WebKit/chromium/public/WebSecurityOrigin.h"
137 #include "third_party/WebKit/WebKit/chromium/public/WebSettings.h" 135 #include "third_party/WebKit/WebKit/chromium/public/WebSettings.h"
138 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" 136 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h"
139 #include "third_party/WebKit/WebKit/chromium/public/WebStorageNamespace.h" 137 #include "third_party/WebKit/WebKit/chromium/public/WebStorageNamespace.h"
140 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" 138 #include "third_party/WebKit/WebKit/chromium/public/WebString.h"
141 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h" 139 #include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
142 #include "third_party/WebKit/WebKit/chromium/public/WebURLError.h" 140 #include "third_party/WebKit/WebKit/chromium/public/WebURLError.h"
143 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" 141 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
144 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" 142 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h"
145 #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" 143 #include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
146 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" 144 #include "third_party/WebKit/WebKit/chromium/public/WebView.h"
147 #include "third_party/WebKit/WebKit/chromium/public/WebWindowFeatures.h" 145 #include "third_party/WebKit/WebKit/chromium/public/WebWindowFeatures.h"
146 #include "third_party/cld/encodings/compact_lang_det/win/cld_unicodetext.h"
147 #include "third_party/skia/include/core/SkBitmap.h"
148 #include "v8/include/v8.h" 148 #include "v8/include/v8.h"
149 #include "webkit/appcache/web_application_cache_host_impl.h" 149 #include "webkit/appcache/web_application_cache_host_impl.h"
150 #include "webkit/glue/context_menu.h" 150 #include "webkit/glue/context_menu.h"
151 #include "webkit/glue/dom_operations.h" 151 #include "webkit/glue/dom_operations.h"
152 #include "webkit/glue/form_data.h" 152 #include "webkit/glue/form_data.h"
153 #include "webkit/glue/form_field.h" 153 #include "webkit/glue/form_field.h"
154 #include "webkit/glue/glue_serialize.h" 154 #include "webkit/glue/glue_serialize.h"
155 #include "webkit/glue/image_decoder.h" 155 #include "webkit/glue/image_decoder.h"
156 #include "webkit/glue/image_resource_fetcher.h" 156 #include "webkit/glue/image_resource_fetcher.h"
157 #include "webkit/glue/media/buffered_data_source.h" 157 #include "webkit/glue/media/buffered_data_source.h"
(...skipping 20 matching lines...) Expand all
178 #elif defined(USE_X11) 178 #elif defined(USE_X11)
179 #include "gfx/native_theme_linux.h" 179 #include "gfx/native_theme_linux.h"
180 #include "third_party/WebKit/WebKit/chromium/public/linux/WebRenderTheme.h" 180 #include "third_party/WebKit/WebKit/chromium/public/linux/WebRenderTheme.h"
181 #elif defined(OS_MACOSX) 181 #elif defined(OS_MACOSX)
182 #include "skia/ext/skia_utils_mac.h" 182 #include "skia/ext/skia_utils_mac.h"
183 #endif 183 #endif
184 184
185 using appcache::WebApplicationCacheHostImpl; 185 using appcache::WebApplicationCacheHostImpl;
186 using base::Time; 186 using base::Time;
187 using base::TimeDelta; 187 using base::TimeDelta;
188 using webkit_glue::AltErrorPageResourceFetcher;
189 using webkit_glue::FormData;
190 using webkit_glue::FormField;
191 using webkit_glue::ImageResourceFetcher;
192 using webkit_glue::PasswordForm;
193 using webkit_glue::PasswordFormDomManager;
194 using webkit_glue::SiteIsolationMetrics;
195 using webkit_glue::WebAccessibility;
196 using WebKit::WebAccessibilityCache; 188 using WebKit::WebAccessibilityCache;
197 using WebKit::WebAccessibilityNotification; 189 using WebKit::WebAccessibilityNotification;
198 using WebKit::WebAccessibilityObject; 190 using WebKit::WebAccessibilityObject;
199 using WebKit::WebApplicationCacheHost; 191 using WebKit::WebApplicationCacheHost;
200 using WebKit::WebApplicationCacheHostClient; 192 using WebKit::WebApplicationCacheHostClient;
201 using WebKit::WebColor; 193 using WebKit::WebColor;
202 using WebKit::WebColorName; 194 using WebKit::WebColorName;
203 using WebKit::WebConsoleMessage; 195 using WebKit::WebConsoleMessage;
204 using WebKit::WebContextMenuData; 196 using WebKit::WebContextMenuData;
205 using WebKit::WebCookieJar; 197 using WebKit::WebCookieJar;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 using WebKit::WebString; 240 using WebKit::WebString;
249 using WebKit::WebTextAffinity; 241 using WebKit::WebTextAffinity;
250 using WebKit::WebTextDirection; 242 using WebKit::WebTextDirection;
251 using WebKit::WebURL; 243 using WebKit::WebURL;
252 using WebKit::WebURLError; 244 using WebKit::WebURLError;
253 using WebKit::WebURLRequest; 245 using WebKit::WebURLRequest;
254 using WebKit::WebURLResponse; 246 using WebKit::WebURLResponse;
255 using WebKit::WebVector; 247 using WebKit::WebVector;
256 using WebKit::WebView; 248 using WebKit::WebView;
257 using WebKit::WebWidget; 249 using WebKit::WebWidget;
250 using WebKit::WebWindowFeatures;
258 using WebKit::WebWorker; 251 using WebKit::WebWorker;
259 using WebKit::WebWorkerClient; 252 using WebKit::WebWorkerClient;
260 using WebKit::WebWindowFeatures; 253 using webkit_glue::AltErrorPageResourceFetcher;
254 using webkit_glue::FormData;
255 using webkit_glue::FormField;
256 using webkit_glue::ImageResourceFetcher;
257 using webkit_glue::PasswordForm;
258 using webkit_glue::PasswordFormDomManager;
259 using webkit_glue::SiteIsolationMetrics;
260 using webkit_glue::WebAccessibility;
261 261
262 //----------------------------------------------------------------------------- 262 //-----------------------------------------------------------------------------
263 263
264 typedef std::map<WebKit::WebView*, RenderView*> ViewMap; 264 typedef std::map<WebKit::WebView*, RenderView*> ViewMap;
265 265
266 // define to write the time necessary for thumbnail/DOM text retrieval, 266 // define to write the time necessary for thumbnail/DOM text retrieval,
267 // respectively, into the system debug log 267 // respectively, into the system debug log
268 // #define TIME_TEXT_RETRIEVAL 268 // #define TIME_TEXT_RETRIEVAL
269 269
270 // maximum number of characters in the document to index, any text beyond this 270 // maximum number of characters in the document to index, any text beyond this
(...skipping 21 matching lines...) Expand all
292 // current content state during tab closing we use a shorter timeout for the 292 // current content state during tab closing we use a shorter timeout for the
293 // foreground renderer. This means there is a small window of time from which 293 // foreground renderer. This means there is a small window of time from which
294 // content state is modified and not sent to session restore, but this is 294 // content state is modified and not sent to session restore, but this is
295 // better than having to wake up all renderers during shutdown. 295 // better than having to wake up all renderers during shutdown.
296 static const int kDelaySecondsForContentStateSyncHidden = 5; 296 static const int kDelaySecondsForContentStateSyncHidden = 5;
297 static const int kDelaySecondsForContentStateSync = 1; 297 static const int kDelaySecondsForContentStateSync = 1;
298 298
299 // The maximum number of popups that can be spawned from one page. 299 // The maximum number of popups that can be spawned from one page.
300 static const int kMaximumNumberOfUnacknowledgedPopups = 25; 300 static const int kMaximumNumberOfUnacknowledgedPopups = 25;
301 301
302 static const char* const kUnreachableWebDataURL = 302 static const char kUnreachableWebDataURL[] = "chrome://chromewebdata/";
303 "chrome://chromewebdata/"; 303 static const char kBackForwardNavigationScheme[] = "history";
304
305 static const char* const kBackForwardNavigationScheme = "history";
306 304
307 static void GetRedirectChain(WebDataSource* ds, std::vector<GURL>* result) { 305 static void GetRedirectChain(WebDataSource* ds, std::vector<GURL>* result) {
308 WebVector<WebURL> urls; 306 WebVector<WebURL> urls;
309 ds->redirectChain(urls); 307 ds->redirectChain(urls);
310 result->reserve(urls.size()); 308 result->reserve(urls.size());
311 for (size_t i = 0; i < urls.size(); ++i) 309 for (size_t i = 0; i < urls.size(); ++i)
312 result->push_back(urls[i]); 310 result->push_back(urls[i]);
313 } 311 }
314 312
315 static bool PaintViewIntoCanvas(WebView* view, 313 static bool PaintViewIntoCanvas(WebView* view,
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 void RenderView::UserMetricsRecordAction(const std::string& action) { 564 void RenderView::UserMetricsRecordAction(const std::string& action) {
567 Send(new ViewHostMsg_UserMetricsRecordAction(routing_id_, action)); 565 Send(new ViewHostMsg_UserMetricsRecordAction(routing_id_, action));
568 } 566 }
569 567
570 void RenderView::PluginCrashed(const FilePath& plugin_path) { 568 void RenderView::PluginCrashed(const FilePath& plugin_path) {
571 Send(new ViewHostMsg_CrashedPlugin(routing_id_, plugin_path)); 569 Send(new ViewHostMsg_CrashedPlugin(routing_id_, plugin_path));
572 } 570 }
573 571
574 WebPlugin* RenderView::CreatePluginNoCheck(WebFrame* frame, 572 WebPlugin* RenderView::CreatePluginNoCheck(WebFrame* frame,
575 const WebPluginParams& params) { 573 const WebPluginParams& params) {
576 std::vector<WebPluginInfo> info; 574 WebPluginInfo info;
577 std::vector<ContentSetting> settings; 575 bool found;
578 std::vector<std::string> mime_types; 576 ContentSetting setting;
579 Send(new ViewHostMsg_GetPluginInfoArray( 577 std::string mime_type;
580 params.url, frame->top()->url(), params.mimeType.utf8(), 578 Send(new ViewHostMsg_GetPluginInfo(
581 &info, &settings, &mime_types)); 579 params.url, frame->top()->url(), params.mimeType.utf8(), &found,
582 580 &info, &setting, &mime_type));
583 // Select the first plugin returned, but only if it's enabled. 581 if (!found || !info.enabled)
584 if (info.empty() || !info[0].enabled)
585 return NULL; 582 return NULL;
586 scoped_refptr<pepper::PluginModule> pepper_module = 583 scoped_refptr<pepper::PluginModule> pepper_module =
587 PepperPluginRegistry::GetInstance()->GetModule(info[0].path); 584 PepperPluginRegistry::GetInstance()->GetModule(info.path);
588 if (pepper_module) 585 if (pepper_module)
589 return CreatePepperPlugin(frame, params, info[0].path, pepper_module.get()); 586 return CreatePepperPlugin(frame, params, info.path, pepper_module.get());
590 else 587 else
591 return CreateNPAPIPlugin(frame, params, info[0].path, mime_types[0]); 588 return CreateNPAPIPlugin(frame, params, info.path, mime_type);
592 } 589 }
593 590
594 void RenderView::RegisterPluginDelegate(WebPluginDelegateProxy* delegate) { 591 void RenderView::RegisterPluginDelegate(WebPluginDelegateProxy* delegate) {
595 plugin_delegates_.insert(delegate); 592 plugin_delegates_.insert(delegate);
596 // If the renderer is visible, set initial visibility and focus state. 593 // If the renderer is visible, set initial visibility and focus state.
597 if (!is_hidden()) { 594 if (!is_hidden()) {
598 #if defined(OS_MACOSX) 595 #if defined(OS_MACOSX)
599 delegate->SetContainerVisibility(true); 596 delegate->SetContainerVisibility(true);
600 if (webview() && webview()->isActive()) 597 if (webview() && webview()->isActive())
601 delegate->SetWindowFocus(true); 598 delegate->SetWindowFocus(true);
(...skipping 1772 matching lines...) Expand 10 before | Expand all | Expand 10 after
2374 if (RenderThread::current()) // Will be NULL during unit tests. 2371 if (RenderThread::current()) // Will be NULL during unit tests.
2375 RenderThread::current()->DoNotSuspendWebKitSharedTimer(); 2372 RenderThread::current()->DoNotSuspendWebKitSharedTimer();
2376 2373
2377 SendAndRunNestedMessageLoop(new ViewHostMsg_RunModal(routing_id_)); 2374 SendAndRunNestedMessageLoop(new ViewHostMsg_RunModal(routing_id_));
2378 } 2375 }
2379 2376
2380 // WebKit::WebFrameClient ----------------------------------------------------- 2377 // WebKit::WebFrameClient -----------------------------------------------------
2381 2378
2382 WebPlugin* RenderView::createPlugin(WebFrame* frame, 2379 WebPlugin* RenderView::createPlugin(WebFrame* frame,
2383 const WebPluginParams& params) { 2380 const WebPluginParams& params) {
2384 std::vector<ContentSetting> settings; 2381 bool found = false;
2382 ContentSetting setting = CONTENT_SETTING_DEFAULT;
2385 CommandLine* cmd = CommandLine::ForCurrentProcess(); 2383 CommandLine* cmd = CommandLine::ForCurrentProcess();
2386 std::vector<WebPluginInfo> info; 2384 WebPluginInfo info;
2387 GURL url(params.url); 2385 GURL url(params.url);
2388 std::vector<std::string> actual_mime_types; 2386 std::string actual_mime_type;
2389 Send(new ViewHostMsg_GetPluginInfoArray(url, 2387 Send(new ViewHostMsg_GetPluginInfo(url,
2390 frame->top()->url(), 2388 frame->top()->url(),
2391 params.mimeType.utf8(), 2389 params.mimeType.utf8(),
2392 &info, 2390 &found,
2393 &settings, 2391 &info,
2394 &actual_mime_types)); 2392 &setting,
2393 &actual_mime_type));
2395 2394
2396 if (info.empty()) 2395 if (!found)
2397 return NULL; 2396 return NULL;
2397 DCHECK(setting != CONTENT_SETTING_DEFAULT);
2398 2398
2399 DCHECK(settings[0] != CONTENT_SETTING_DEFAULT); 2399 scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(info));
2400 group->AddPlugin(info, 0);
2400 2401
2401 scoped_ptr<PluginGroup> group(PluginGroup::CopyOrCreatePluginGroup(info[0])); 2402 if (!info.enabled) {
2402 group->AddPlugin(info[0], 0);
2403
2404 if (!info[0].enabled) {
2405 if (cmd->HasSwitch(switches::kDisableOutdatedPlugins) && 2403 if (cmd->HasSwitch(switches::kDisableOutdatedPlugins) &&
2406 group->IsVulnerable()) { 2404 group->IsVulnerable()) {
2407 Send(new ViewHostMsg_DisabledOutdatedPlugin(routing_id_, 2405 Send(new ViewHostMsg_DisabledOutdatedPlugin(routing_id_,
2408 group->GetGroupName(), 2406 group->GetGroupName(),
2409 GURL(group->GetUpdateURL()))); 2407 GURL(group->GetUpdateURL())));
2410 return CreateOutdatedPluginPlaceholder(frame, params, group.get()); 2408 return CreateOutdatedPluginPlaceholder(frame, params, group.get());
2411 } 2409 }
2412 return NULL; 2410 return NULL;
2413 } 2411 }
2414 2412
2415 if (info[0].path.value() == kDefaultPluginLibraryName || 2413 if (info.path.value() == kDefaultPluginLibraryName ||
2416 settings[0] == CONTENT_SETTING_ALLOW) { 2414 setting == CONTENT_SETTING_ALLOW) {
2417 scoped_refptr<pepper::PluginModule> pepper_module = 2415 scoped_refptr<pepper::PluginModule> pepper_module =
2418 PepperPluginRegistry::GetInstance()->GetModule(info[0].path); 2416 PepperPluginRegistry::GetInstance()->GetModule(info.path);
2419 if (pepper_module) { 2417 if (pepper_module) {
2420 return CreatePepperPlugin(frame, 2418 return CreatePepperPlugin(frame,
2421 params, 2419 params,
2422 info[0].path, 2420 info.path,
2423 pepper_module.get()); 2421 pepper_module.get());
2424 } 2422 }
2425 return CreateNPAPIPlugin(frame, params, info[0].path, actual_mime_types[0]); 2423 return CreateNPAPIPlugin(frame, params, info.path, actual_mime_type);
2426 } 2424 }
2427 std::string resource; 2425 std::string resource;
2428 if (cmd->HasSwitch(switches::kEnableResourceContentSettings)) 2426 if (cmd->HasSwitch(switches::kEnableResourceContentSettings))
2429 resource = group->identifier(); 2427 resource = group->identifier();
2430 DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, resource); 2428 DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, resource);
2431 int resource_id; 2429 int resource_id;
2432 int message_id; 2430 int message_id;
2433 if (settings[0] == CONTENT_SETTING_ASK) { 2431 if (setting == CONTENT_SETTING_ASK) {
2434 resource_id = IDR_BLOCKED_PLUGIN_HTML; 2432 resource_id = IDR_BLOCKED_PLUGIN_HTML;
2435 message_id = IDS_PLUGIN_LOAD; 2433 message_id = IDS_PLUGIN_LOAD;
2436 } else { 2434 } else {
2437 resource_id = IDR_OUTDATED_PLUGIN_HTML; 2435 resource_id = IDR_OUTDATED_PLUGIN_HTML;
2438 message_id = IDS_PLUGIN_BLOCKED; 2436 message_id = IDS_PLUGIN_BLOCKED;
2439 } 2437 }
2440
2441 // |blocked_plugin| will delete itself when the WebViewPlugin 2438 // |blocked_plugin| will delete itself when the WebViewPlugin
2442 // is destroyed. 2439 // is destroyed.
2443 BlockedPlugin* blocked_plugin = 2440 BlockedPlugin* blocked_plugin =
2444 new BlockedPlugin(this, 2441 new BlockedPlugin(this,
2445 frame, 2442 frame,
2446 params, 2443 params,
2447 webkit_preferences_, 2444 webkit_preferences_,
2448 resource_id, 2445 resource_id,
2449 l10n_util::GetStringUTF16(message_id)); 2446 l10n_util::GetStringUTF16(message_id));
2450 return blocked_plugin->plugin(); 2447 return blocked_plugin->plugin();
(...skipping 3525 matching lines...) Expand 10 before | Expand all | Expand 10 after
5976 } 5973 }
5977 5974
5978 void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code, 5975 void RenderView::OnAsyncFileOpened(base::PlatformFileError error_code,
5979 IPC::PlatformFileForTransit file_for_transit, 5976 IPC::PlatformFileForTransit file_for_transit,
5980 int message_id) { 5977 int message_id) {
5981 pepper_delegate_.OnAsyncFileOpened( 5978 pepper_delegate_.OnAsyncFileOpened(
5982 error_code, 5979 error_code,
5983 IPC::PlatformFileForTransitToPlatformFile(file_for_transit), 5980 IPC::PlatformFileForTransitToPlatformFile(file_for_transit),
5984 message_id); 5981 message_id);
5985 } 5982 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698