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

Side by Side Diff: chrome/renderer/plugins/chrome_plugin_placeholder.cc

Issue 2845413002: Plugin Power Saver: Add missing RenderFrame null-checks in placeholders (Closed)
Patch Set: add comment Created 3 years, 7 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
« no previous file with comments | « no previous file | components/plugins/renderer/loadable_plugin_placeholder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/renderer/plugins/chrome_plugin_placeholder.h" 5 #include "chrome/renderer/plugins/chrome_plugin_placeholder.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 226
227 void ChromePluginPlaceholder::OnSetPrerenderMode( 227 void ChromePluginPlaceholder::OnSetPrerenderMode(
228 prerender::PrerenderMode mode) { 228 prerender::PrerenderMode mode) {
229 OnSetIsPrerendering(mode != prerender::NO_PRERENDER); 229 OnSetIsPrerendering(mode != prerender::NO_PRERENDER);
230 } 230 }
231 231
232 void ChromePluginPlaceholder::PluginListChanged() { 232 void ChromePluginPlaceholder::PluginListChanged() {
233 if (!GetFrame() || !plugin()) 233 if (!GetFrame() || !plugin())
234 return; 234 return;
235 235
236 // Checking with GetFrame() is equivalent to checking render_frame().
237 DCHECK(render_frame());
238
236 ChromeViewHostMsg_GetPluginInfo_Output output; 239 ChromeViewHostMsg_GetPluginInfo_Output output;
237 std::string mime_type(GetPluginParams().mime_type.Utf8()); 240 std::string mime_type(GetPluginParams().mime_type.Utf8());
238 render_frame()->Send(new ChromeViewHostMsg_GetPluginInfo( 241 render_frame()->Send(new ChromeViewHostMsg_GetPluginInfo(
239 routing_id(), GURL(GetPluginParams().url), 242 routing_id(), GURL(GetPluginParams().url),
240 GetFrame()->Top()->GetSecurityOrigin(), mime_type, &output)); 243 GetFrame()->Top()->GetSecurityOrigin(), mime_type, &output));
241 if (output.status == status_) 244 if (output.status == status_)
242 return; 245 return;
243 blink::WebPlugin* new_plugin = ChromeContentRendererClient::CreatePlugin( 246 blink::WebPlugin* new_plugin = ChromeContentRendererClient::CreatePlugin(
244 render_frame(), GetFrame(), GetPluginParams(), output); 247 render_frame(), GetFrame(), GetPluginParams(), output);
245 ReplacePlugin(new_plugin); 248 ReplacePlugin(new_plugin);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 285
283 v8::Local<v8::Value> ChromePluginPlaceholder::GetV8Handle( 286 v8::Local<v8::Value> ChromePluginPlaceholder::GetV8Handle(
284 v8::Isolate* isolate) { 287 v8::Isolate* isolate) {
285 return gin::CreateHandle(isolate, this).ToV8(); 288 return gin::CreateHandle(isolate, this).ToV8();
286 } 289 }
287 290
288 void ChromePluginPlaceholder::ShowContextMenu( 291 void ChromePluginPlaceholder::ShowContextMenu(
289 const blink::WebMouseEvent& event) { 292 const blink::WebMouseEvent& event) {
290 if (context_menu_request_id_) 293 if (context_menu_request_id_)
291 return; // Don't allow nested context menu requests. 294 return; // Don't allow nested context menu requests.
295 if (!render_frame())
296 return;
292 297
293 content::ContextMenuParams params; 298 content::ContextMenuParams params;
294 299
295 if (!title_.empty()) { 300 if (!title_.empty()) {
296 content::MenuItem name_item; 301 content::MenuItem name_item;
297 name_item.label = title_; 302 name_item.label = title_;
298 params.custom_items.push_back(name_item); 303 params.custom_items.push_back(name_item);
299 304
300 content::MenuItem separator_item; 305 content::MenuItem separator_item;
301 separator_item.type = content::MenuItem::SEPARATOR; 306 separator_item.type = content::MenuItem::SEPARATOR;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 new PluginPreroller(render_frame(), GetFrame(), GetPluginParams(), 359 new PluginPreroller(render_frame(), GetFrame(), GetPluginParams(),
355 GetPluginInfo(), GetIdentifier(), title_, 360 GetPluginInfo(), GetIdentifier(), title_,
356 l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, title_), 361 l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, title_),
357 throttler.get()); 362 throttler.get());
358 } 363 }
359 return render_frame()->CreatePlugin(GetFrame(), GetPluginInfo(), 364 return render_frame()->CreatePlugin(GetFrame(), GetPluginInfo(),
360 GetPluginParams(), std::move(throttler)); 365 GetPluginParams(), std::move(throttler));
361 } 366 }
362 367
363 void ChromePluginPlaceholder::OnBlockedTinyContent() { 368 void ChromePluginPlaceholder::OnBlockedTinyContent() {
369 DCHECK(render_frame());
364 if (did_send_blocked_content_notification_) 370 if (did_send_blocked_content_notification_)
365 return; 371 return;
366 372
367 did_send_blocked_content_notification_ = true; 373 did_send_blocked_content_notification_ = true;
368 ContentSettingsObserver::Get(render_frame()) 374 ContentSettingsObserver::Get(render_frame())
369 ->DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, title_); 375 ->DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, title_);
370 } 376 }
371 377
372 gin::ObjectTemplateBuilder ChromePluginPlaceholder::GetObjectTemplateBuilder( 378 gin::ObjectTemplateBuilder ChromePluginPlaceholder::GetObjectTemplateBuilder(
373 v8::Isolate* isolate) { 379 v8::Isolate* isolate) {
(...skipping 11 matching lines...) Expand all
385 391
386 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 392 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
387 switches::kEnablePluginPlaceholderTesting)) { 393 switches::kEnablePluginPlaceholderTesting)) {
388 builder.SetMethod<void (ChromePluginPlaceholder::*)()>( 394 builder.SetMethod<void (ChromePluginPlaceholder::*)()>(
389 "didFinishIconRepositionForTesting", 395 "didFinishIconRepositionForTesting",
390 &ChromePluginPlaceholder::DidFinishIconRepositionForTestingCallback); 396 &ChromePluginPlaceholder::DidFinishIconRepositionForTestingCallback);
391 } 397 }
392 398
393 return builder; 399 return builder;
394 } 400 }
OLDNEW
« no previous file with comments | « no previous file | components/plugins/renderer/loadable_plugin_placeholder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698