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

Side by Side Diff: content/renderer/pepper/pepper_plugin_instance_impl.cc

Issue 21219002: Remove PluginDelegate completely. In a followup I'll rename PepperPluginDelegateImpl to something c… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/renderer/pepper/pepper_plugin_instance_impl.h" 5 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 345
346 private: 346 private:
347 PepperPluginInstanceImpl* plugin_; 347 PepperPluginInstanceImpl* plugin_;
348 }; 348 };
349 349
350 350
351 } // namespace 351 } // namespace
352 352
353 // static 353 // static
354 PepperPluginInstanceImpl* PepperPluginInstanceImpl::Create( 354 PepperPluginInstanceImpl* PepperPluginInstanceImpl::Create(
355 PluginDelegate* delegate, 355 PepperPluginDelegateImpl* delegate,
356 RenderViewImpl* render_view, 356 RenderViewImpl* render_view,
357 PluginModule* module, 357 PluginModule* module,
358 WebPluginContainer* container, 358 WebPluginContainer* container,
359 const GURL& plugin_url) { 359 const GURL& plugin_url) {
360 base::Callback<const void*(const char*)> get_plugin_interface_func = 360 base::Callback<const void*(const char*)> get_plugin_interface_func =
361 base::Bind(&PluginModule::GetPluginInterface, module); 361 base::Bind(&PluginModule::GetPluginInterface, module);
362 PPP_Instance_Combined* ppp_instance_combined = 362 PPP_Instance_Combined* ppp_instance_combined =
363 PPP_Instance_Combined::Create(get_plugin_interface_func); 363 PPP_Instance_Combined::Create(get_plugin_interface_func);
364 if (!ppp_instance_combined) 364 if (!ppp_instance_combined)
365 return NULL; 365 return NULL;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 finished_loading_ = true; 406 finished_loading_ = true;
407 } 407 }
408 408
409 void PepperPluginInstanceImpl::NaClDocumentLoader::didFail( 409 void PepperPluginInstanceImpl::NaClDocumentLoader::didFail(
410 WebURLLoader* loader, 410 WebURLLoader* loader,
411 const WebURLError& error) { 411 const WebURLError& error) {
412 DCHECK(!error_.get()); 412 DCHECK(!error_.get());
413 error_.reset(new WebURLError(error)); 413 error_.reset(new WebURLError(error));
414 } 414 }
415 415
416 PepperPluginInstanceImpl::GamepadImpl::GamepadImpl(PluginDelegate* delegate) 416 PepperPluginInstanceImpl::GamepadImpl::GamepadImpl(
417 PepperPluginDelegateImpl* delegate)
417 : Resource(::ppapi::Resource::Untracked()), 418 : Resource(::ppapi::Resource::Untracked()),
418 delegate_(delegate) { 419 delegate_(delegate) {
419 } 420 }
420 421
421 PepperPluginInstanceImpl::GamepadImpl::~GamepadImpl() { 422 PepperPluginInstanceImpl::GamepadImpl::~GamepadImpl() {
422 } 423 }
423 424
424 PPB_Gamepad_API* PepperPluginInstanceImpl::GamepadImpl::AsPPB_Gamepad_API() { 425 PPB_Gamepad_API* PepperPluginInstanceImpl::GamepadImpl::AsPPB_Gamepad_API() {
425 return this; 426 return this;
426 } 427 }
427 428
428 void PepperPluginInstanceImpl::GamepadImpl::Sample( 429 void PepperPluginInstanceImpl::GamepadImpl::Sample(
429 PP_Instance instance, 430 PP_Instance instance,
430 PP_GamepadsSampleData* data) { 431 PP_GamepadsSampleData* data) {
431 WebKit::WebGamepads webkit_data; 432 WebKit::WebGamepads webkit_data;
432 delegate_->SampleGamepads(&webkit_data); 433 delegate_->SampleGamepads(&webkit_data);
433 ConvertWebKitGamepadData( 434 ConvertWebKitGamepadData(
434 *reinterpret_cast<const ::ppapi::WebKitGamepads*>(&webkit_data), data); 435 *reinterpret_cast<const ::ppapi::WebKitGamepads*>(&webkit_data), data);
435 } 436 }
436 437
437 PepperPluginInstanceImpl::PepperPluginInstanceImpl( 438 PepperPluginInstanceImpl::PepperPluginInstanceImpl(
438 PluginDelegate* delegate, 439 PepperPluginDelegateImpl* delegate,
439 RenderViewImpl* render_view, 440 RenderViewImpl* render_view,
440 PluginModule* module, 441 PluginModule* module,
441 ::ppapi::PPP_Instance_Combined* instance_interface, 442 ::ppapi::PPP_Instance_Combined* instance_interface,
442 WebPluginContainer* container, 443 WebPluginContainer* container,
443 const GURL& plugin_url) 444 const GURL& plugin_url)
444 : delegate_(delegate), 445 : delegate_(delegate),
445 render_view_(render_view), 446 render_view_(render_view),
446 module_(module), 447 module_(module),
447 instance_interface_(instance_interface), 448 instance_interface_(instance_interface),
448 pp_instance_(0), 449 pp_instance_(0),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 selection_caret_(0), 486 selection_caret_(0),
486 selection_anchor_(0), 487 selection_anchor_(0),
487 pending_user_gesture_(0.0), 488 pending_user_gesture_(0.0),
488 document_loader_(NULL), 489 document_loader_(NULL),
489 nacl_document_load_(false), 490 nacl_document_load_(false),
490 npp_(new NPP_t), 491 npp_(new NPP_t),
491 isolate_(v8::Isolate::GetCurrent()) { 492 isolate_(v8::Isolate::GetCurrent()) {
492 pp_instance_ = HostGlobals::Get()->AddInstance(this); 493 pp_instance_ = HostGlobals::Get()->AddInstance(this);
493 494
494 memset(&current_print_settings_, 0, sizeof(current_print_settings_)); 495 memset(&current_print_settings_, 0, sizeof(current_print_settings_));
495 DCHECK(delegate);
496 module_->InstanceCreated(this); 496 module_->InstanceCreated(this);
497 delegate_->InstanceCreated(this); 497
498 if (delegate_)
499 delegate_->InstanceCreated(this);
498 500
499 if (render_view) // NULL in tests 501 if (render_view) // NULL in tests
500 view_data_.is_page_visible = !render_view->is_hidden(); 502 view_data_.is_page_visible = !render_view->is_hidden();
501 503
502 RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host(); 504 RendererPpapiHostImpl* host_impl = module_->renderer_ppapi_host();
503 resource_creation_ = host_impl->CreateInProcessResourceCreationAPI(this); 505 resource_creation_ = host_impl->CreateInProcessResourceCreationAPI(this);
504 506
505 // TODO(bbudge) remove this when the trusted NaCl plugin has been removed. 507 // TODO(bbudge) remove this when the trusted NaCl plugin has been removed.
506 // We must defer certain plugin events for NaCl instances since we switch 508 // We must defer certain plugin events for NaCl instances since we switch
507 // from the in-process to the out-of-process proxy after instantiating them. 509 // from the in-process to the out-of-process proxy after instantiating them.
(...skipping 16 matching lines...) Expand all
524 // unregister themselves inside the delete call). 526 // unregister themselves inside the delete call).
525 PluginObjectSet plugin_object_copy; 527 PluginObjectSet plugin_object_copy;
526 live_plugin_objects_.swap(plugin_object_copy); 528 live_plugin_objects_.swap(plugin_object_copy);
527 for (PluginObjectSet::iterator i = plugin_object_copy.begin(); 529 for (PluginObjectSet::iterator i = plugin_object_copy.begin();
528 i != plugin_object_copy.end(); ++i) 530 i != plugin_object_copy.end(); ++i)
529 delete *i; 531 delete *i;
530 532
531 if (TrackedCallback::IsPending(lock_mouse_callback_)) 533 if (TrackedCallback::IsPending(lock_mouse_callback_))
532 lock_mouse_callback_->Abort(); 534 lock_mouse_callback_->Abort();
533 535
534 delegate_->InstanceDeleted(this); 536 if (delegate_)
537 delegate_->InstanceDeleted(this);
535 UnSetAndDeleteLockTargetAdapter(); 538 UnSetAndDeleteLockTargetAdapter();
536 module_->InstanceDeleted(this); 539 module_->InstanceDeleted(this);
537 // If we switched from the NaCl plugin module, notify it too. 540 // If we switched from the NaCl plugin module, notify it too.
538 if (original_module_.get()) 541 if (original_module_.get())
539 original_module_->InstanceDeleted(this); 542 original_module_->InstanceDeleted(this);
540 543
541 // This should be last since some of the above "instance deleted" calls will 544 // This should be last since some of the above "instance deleted" calls will
542 // want to look up in the global map to get info off of our object. 545 // want to look up in the global map to get info off of our object.
543 HostGlobals::Get()->InstanceDeleted(pp_instance_); 546 HostGlobals::Get()->InstanceDeleted(pp_instance_);
544 } 547 }
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 711
709 bool PepperPluginInstanceImpl::HandleDocumentLoad( 712 bool PepperPluginInstanceImpl::HandleDocumentLoad(
710 const WebKit::WebURLResponse& response) { 713 const WebKit::WebURLResponse& response) {
711 DCHECK(!document_loader_); 714 DCHECK(!document_loader_);
712 if (!nacl_document_load_) { 715 if (!nacl_document_load_) {
713 if (module()->is_crashed()) { 716 if (module()->is_crashed()) {
714 // Don't create a resource for a crashed plugin. 717 // Don't create a resource for a crashed plugin.
715 container()->element().document().frame()->stopLoading(); 718 container()->element().document().frame()->stopLoading();
716 return false; 719 return false;
717 } 720 }
718 delegate()->HandleDocumentLoad(this, response); 721 delegate_->HandleDocumentLoad(this, response);
719 // If the load was not abandoned, document_loader_ will now be set. It's 722 // If the load was not abandoned, document_loader_ will now be set. It's
720 // possible that the load was canceled by now and document_loader_ was 723 // possible that the load was canceled by now and document_loader_ was
721 // already nulled out. 724 // already nulled out.
722 } else { 725 } else {
723 // The NaCl proxy isn't available, so save the response and record document 726 // The NaCl proxy isn't available, so save the response and record document
724 // load notifications for later replay. 727 // load notifications for later replay.
725 nacl_document_response_ = response; 728 nacl_document_response_ = response;
726 nacl_document_loader_.reset(new NaClDocumentLoader()); 729 nacl_document_loader_.reset(new NaClDocumentLoader());
727 document_loader_ = nacl_document_loader_.get(); 730 document_loader_ = nacl_document_loader_.get();
728 } 731 }
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 caret.Offset(view_data_.rect.point.x, view_data_.rect.point.y); 886 caret.Offset(view_data_.rect.point.x, view_data_.rect.point.y);
884 return caret; 887 return caret;
885 } 888 }
886 889
887 bool PepperPluginInstanceImpl::HandleInputEvent( 890 bool PepperPluginInstanceImpl::HandleInputEvent(
888 const WebKit::WebInputEvent& event, 891 const WebKit::WebInputEvent& event,
889 WebCursorInfo* cursor_info) { 892 WebCursorInfo* cursor_info) {
890 TRACE_EVENT0("ppapi", "PepperPluginInstanceImpl::HandleInputEvent"); 893 TRACE_EVENT0("ppapi", "PepperPluginInstanceImpl::HandleInputEvent");
891 894
892 if (WebInputEvent::isMouseEventType(event.type)) { 895 if (WebInputEvent::isMouseEventType(event.type)) {
893 static_cast<PepperPluginDelegateImpl*>(delegate_)->DidReceiveMouseEvent( 896 delegate_->DidReceiveMouseEvent(this);
894 this);
895 } 897 }
896 898
897 // Don't dispatch input events to crashed plugins. 899 // Don't dispatch input events to crashed plugins.
898 if (module()->is_crashed()) 900 if (module()->is_crashed())
899 return false; 901 return false;
900 902
901 // Keep a reference on the stack. See NOTE above. 903 // Keep a reference on the stack. See NOTE above.
902 scoped_refptr<PepperPluginInstanceImpl> ref(this); 904 scoped_refptr<PepperPluginInstanceImpl> ref(this);
903 905
904 bool rv = false; 906 bool rv = false;
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
1322 } 1324 }
1323 1325
1324 return !!plugin_zoom_interface_; 1326 return !!plugin_zoom_interface_;
1325 } 1327 }
1326 1328
1327 bool PepperPluginInstanceImpl::PluginHasFocus() const { 1329 bool PepperPluginInstanceImpl::PluginHasFocus() const {
1328 return flash_fullscreen_ || (has_webkit_focus_ && has_content_area_focus_); 1330 return flash_fullscreen_ || (has_webkit_focus_ && has_content_area_focus_);
1329 } 1331 }
1330 1332
1331 void PepperPluginInstanceImpl::SendFocusChangeNotification() { 1333 void PepperPluginInstanceImpl::SendFocusChangeNotification() {
1332 // This call can happen during PepperPluginInstanceImpl destruction, because 1334 // This call can happen during PepperPluginIn>stanceImpl destruction, because
1333 // WebKit informs the plugin it's losing focus. See crbug.com/236574 1335 // WebKit informs the plugin it's losing focus. See crbug.com/236574
1334 if (!delegate_ || !instance_interface_) 1336 if (!delegate_ || !instance_interface_)
1335 return; 1337 return;
1336 bool has_focus = PluginHasFocus(); 1338 bool has_focus = PluginHasFocus();
1337 delegate()->PluginFocusChanged(this, has_focus); 1339 delegate_->PluginFocusChanged(this, has_focus);
1338 instance_interface_->DidChangeFocus(pp_instance(), PP_FromBool(has_focus)); 1340 instance_interface_->DidChangeFocus(pp_instance(), PP_FromBool(has_focus));
1339 } 1341 }
1340 1342
1341 void PepperPluginInstanceImpl::UpdateTouchEventRequest() { 1343 void PepperPluginInstanceImpl::UpdateTouchEventRequest() {
1342 bool raw_touch = (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) || 1344 bool raw_touch = (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) ||
1343 (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH); 1345 (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH);
1344 container_->requestTouchEventType(raw_touch ? 1346 container_->requestTouchEventType(raw_touch ?
1345 WebKit::WebPluginContainer::TouchEventRequestTypeRaw : 1347 WebKit::WebPluginContainer::TouchEventRequestTypeRaw :
1346 WebKit::WebPluginContainer::TouchEventRequestTypeSynthesizedMouse); 1348 WebKit::WebPluginContainer::TouchEventRequestTypeSynthesizedMouse);
1347 } 1349 }
(...skipping 988 matching lines...) Expand 10 before | Expand all | Expand 10 after
2336 void PepperPluginInstanceImpl::UnlockMouse(PP_Instance instance) { 2338 void PepperPluginInstanceImpl::UnlockMouse(PP_Instance instance) {
2337 GetMouseLockDispatcher()->UnlockMouse(GetOrCreateLockTargetAdapter()); 2339 GetMouseLockDispatcher()->UnlockMouse(GetOrCreateLockTargetAdapter());
2338 } 2340 }
2339 2341
2340 void PepperPluginInstanceImpl::SetTextInputType(PP_Instance instance, 2342 void PepperPluginInstanceImpl::SetTextInputType(PP_Instance instance,
2341 PP_TextInput_Type type) { 2343 PP_TextInput_Type type) {
2342 int itype = type; 2344 int itype = type;
2343 if (itype < 0 || itype > ui::TEXT_INPUT_TYPE_URL) 2345 if (itype < 0 || itype > ui::TEXT_INPUT_TYPE_URL)
2344 itype = ui::TEXT_INPUT_TYPE_NONE; 2346 itype = ui::TEXT_INPUT_TYPE_NONE;
2345 text_input_type_ = static_cast<ui::TextInputType>(itype); 2347 text_input_type_ = static_cast<ui::TextInputType>(itype);
2346 delegate()->PluginTextInputTypeChanged(this); 2348 delegate_->PluginTextInputTypeChanged(this);
2347 } 2349 }
2348 2350
2349 void PepperPluginInstanceImpl::UpdateCaretPosition( 2351 void PepperPluginInstanceImpl::UpdateCaretPosition(
2350 PP_Instance instance, 2352 PP_Instance instance,
2351 const PP_Rect& caret, 2353 const PP_Rect& caret,
2352 const PP_Rect& bounding_box) { 2354 const PP_Rect& bounding_box) {
2353 text_input_caret_ = PP_ToGfxRect(caret); 2355 text_input_caret_ = PP_ToGfxRect(caret);
2354 text_input_caret_bounds_ = PP_ToGfxRect(bounding_box); 2356 text_input_caret_bounds_ = PP_ToGfxRect(bounding_box);
2355 text_input_caret_set_ = true; 2357 text_input_caret_set_ = true;
2356 delegate()->PluginCaretPositionChanged(this); 2358 delegate_->PluginCaretPositionChanged(this);
2357 } 2359 }
2358 2360
2359 void PepperPluginInstanceImpl::CancelCompositionText(PP_Instance instance) { 2361 void PepperPluginInstanceImpl::CancelCompositionText(PP_Instance instance) {
2360 delegate()->PluginRequestedCancelComposition(this); 2362 delegate_->PluginRequestedCancelComposition(this);
2361 } 2363 }
2362 2364
2363 void PepperPluginInstanceImpl::SelectionChanged(PP_Instance instance) { 2365 void PepperPluginInstanceImpl::SelectionChanged(PP_Instance instance) {
2364 // TODO(kinaba): currently the browser always calls RequestSurroundingText. 2366 // TODO(kinaba): currently the browser always calls RequestSurroundingText.
2365 // It can be optimized so that it won't call it back until the information 2367 // It can be optimized so that it won't call it back until the information
2366 // is really needed. 2368 // is really needed.
2367 2369
2368 // Avoid calling in nested context or else this will reenter the plugin. This 2370 // Avoid calling in nested context or else this will reenter the plugin. This
2369 // uses a weak pointer rather than exploiting the fact that this class is 2371 // uses a weak pointer rather than exploiting the fact that this class is
2370 // refcounted because we don't actually want this operation to affect the 2372 // refcounted because we don't actually want this operation to affect the
2371 // lifetime of the instance. 2373 // lifetime of the instance.
2372 base::MessageLoop::current()->PostTask( 2374 base::MessageLoop::current()->PostTask(
2373 FROM_HERE, 2375 FROM_HERE,
2374 base::Bind(&PepperPluginInstanceImpl::RequestSurroundingText, 2376 base::Bind(&PepperPluginInstanceImpl::RequestSurroundingText,
2375 AsWeakPtr(), 2377 AsWeakPtr(),
2376 static_cast<size_t>(kExtraCharsForTextInput))); 2378 static_cast<size_t>(kExtraCharsForTextInput)));
2377 } 2379 }
2378 2380
2379 void PepperPluginInstanceImpl::UpdateSurroundingText(PP_Instance instance, 2381 void PepperPluginInstanceImpl::UpdateSurroundingText(PP_Instance instance,
2380 const char* text, 2382 const char* text,
2381 uint32_t caret, 2383 uint32_t caret,
2382 uint32_t anchor) { 2384 uint32_t anchor) {
2383 surrounding_text_ = text; 2385 surrounding_text_ = text;
2384 selection_caret_ = caret; 2386 selection_caret_ = caret;
2385 selection_anchor_ = anchor; 2387 selection_anchor_ = anchor;
2386 delegate()->PluginSelectionChanged(this); 2388 delegate_->PluginSelectionChanged(this);
2387 } 2389 }
2388 2390
2389 PP_Var PepperPluginInstanceImpl::ResolveRelativeToDocument( 2391 PP_Var PepperPluginInstanceImpl::ResolveRelativeToDocument(
2390 PP_Instance instance, 2392 PP_Instance instance,
2391 PP_Var relative, 2393 PP_Var relative,
2392 PP_URLComponents_Dev* components) { 2394 PP_URLComponents_Dev* components) {
2393 StringVar* relative_string = StringVar::FromPPVar(relative); 2395 StringVar* relative_string = StringVar::FromPPVar(relative);
2394 if (!relative_string) 2396 if (!relative_string)
2395 return PP_MakeNull(); 2397 return PP_MakeNull();
2396 2398
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
2627 2629
2628 void PepperPluginInstanceImpl::SetAlwaysOnTop(bool on_top) { 2630 void PepperPluginInstanceImpl::SetAlwaysOnTop(bool on_top) {
2629 always_on_top_ = on_top; 2631 always_on_top_ = on_top;
2630 } 2632 }
2631 2633
2632 void PepperPluginInstanceImpl::DoSetCursor(WebCursorInfo* cursor) { 2634 void PepperPluginInstanceImpl::DoSetCursor(WebCursorInfo* cursor) {
2633 cursor_.reset(cursor); 2635 cursor_.reset(cursor);
2634 if (fullscreen_container_) { 2636 if (fullscreen_container_) {
2635 fullscreen_container_->DidChangeCursor(*cursor); 2637 fullscreen_container_->DidChangeCursor(*cursor);
2636 } else { 2638 } else {
2637 static_cast<PepperPluginDelegateImpl*>(delegate_)->DidChangeCursor( 2639 delegate_->DidChangeCursor(this, *cursor);
2638 this, *cursor);
2639 } 2640 }
2640 } 2641 }
2641 2642
2642 bool PepperPluginInstanceImpl::IsFullPagePlugin() { 2643 bool PepperPluginInstanceImpl::IsFullPagePlugin() {
2643 WebFrame* frame = container()->element().document().frame(); 2644 WebFrame* frame = container()->element().document().frame();
2644 return frame->view()->mainFrame()->document().isPluginDocument(); 2645 return frame->view()->mainFrame()->document().isPluginDocument();
2645 } 2646 }
2646 2647
2647 void PepperPluginInstanceImpl::FlashSetFullscreen(bool fullscreen, 2648 void PepperPluginInstanceImpl::FlashSetFullscreen(bool fullscreen,
2648 bool delay_report) { 2649 bool delay_report) {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2817 } 2818 }
2818 2819
2819 void PepperPluginInstanceImpl::UnSetAndDeleteLockTargetAdapter() { 2820 void PepperPluginInstanceImpl::UnSetAndDeleteLockTargetAdapter() {
2820 if (lock_target_.get()) { 2821 if (lock_target_.get()) {
2821 GetMouseLockDispatcher()->OnLockTargetDestroyed(lock_target_.get()); 2822 GetMouseLockDispatcher()->OnLockTargetDestroyed(lock_target_.get());
2822 lock_target_.reset(); 2823 lock_target_.reset();
2823 } 2824 }
2824 } 2825 }
2825 2826
2826 } // namespace content 2827 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/pepper_plugin_instance_impl.h ('k') | content/renderer/pepper/pepper_webplugin_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698