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

Side by Side Diff: content/browser/browser_plugin/browser_plugin_guest.cc

Issue 295083002: BrowserPluginGuest is no longer a WebContentsDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@make_context_menu_easier_to_refactor
Patch Set: Fixed focus after crash Created 6 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
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/browser/browser_plugin/browser_plugin_guest.h" 5 #include "content/browser/browser_plugin/browser_plugin_guest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 auto_size_enabled_(false), 106 auto_size_enabled_(false),
107 copy_request_id_(0), 107 copy_request_id_(0),
108 has_render_view_(has_render_view), 108 has_render_view_(has_render_view),
109 last_seen_auto_size_enabled_(false), 109 last_seen_auto_size_enabled_(false),
110 is_in_destruction_(false), 110 is_in_destruction_(false),
111 last_text_input_type_(ui::TEXT_INPUT_TYPE_NONE), 111 last_text_input_type_(ui::TEXT_INPUT_TYPE_NONE),
112 last_input_mode_(ui::TEXT_INPUT_MODE_DEFAULT), 112 last_input_mode_(ui::TEXT_INPUT_MODE_DEFAULT),
113 last_can_compose_inline_(true), 113 last_can_compose_inline_(true),
114 weak_ptr_factory_(this) { 114 weak_ptr_factory_(this) {
115 DCHECK(web_contents); 115 DCHECK(web_contents);
116 web_contents->SetDelegate(this);
117 }
118
119 bool BrowserPluginGuest::AddMessageToConsole(WebContents* source,
120 int32 level,
121 const base::string16& message,
122 int32 line_no,
123 const base::string16& source_id) {
124 if (!delegate_)
125 return false;
126
127 delegate_->AddMessageToConsole(level, message, line_no, source_id);
128 return true;
129 } 116 }
130 117
131 void BrowserPluginGuest::WillDestroy(WebContents* web_contents) { 118 void BrowserPluginGuest::WillDestroy(WebContents* web_contents) {
132 DCHECK_EQ(web_contents, GetWebContents()); 119 DCHECK_EQ(web_contents, GetWebContents());
133 is_in_destruction_ = true; 120 is_in_destruction_ = true;
134 } 121 }
135 122
136 base::WeakPtr<BrowserPluginGuest> BrowserPluginGuest::AsWeakPtr() { 123 base::WeakPtr<BrowserPluginGuest> BrowserPluginGuest::AsWeakPtr() {
137 return weak_ptr_factory_.GetWeakPtr(); 124 return weak_ptr_factory_.GetWeakPtr();
138 } 125 }
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 gfx::Rect guest_rect(bounds); 348 gfx::Rect guest_rect(bounds);
362 guest_rect.Offset(guest_window_rect_.OffsetFromOrigin()); 349 guest_rect.Offset(guest_window_rect_.OffsetFromOrigin());
363 return guest_rect; 350 return guest_rect;
364 } 351 }
365 352
366 void BrowserPluginGuest::EmbedderVisibilityChanged(bool visible) { 353 void BrowserPluginGuest::EmbedderVisibilityChanged(bool visible) {
367 embedder_visible_ = visible; 354 embedder_visible_ = visible;
368 UpdateVisibility(); 355 UpdateVisibility();
369 } 356 }
370 357
371 void BrowserPluginGuest::AddNewContents(WebContents* source,
372 WebContents* new_contents,
373 WindowOpenDisposition disposition,
374 const gfx::Rect& initial_pos,
375 bool user_gesture,
376 bool* was_blocked) {
377 if (!delegate_)
378 return;
379
380 delegate_->AddNewContents(source, new_contents, disposition,
381 initial_pos, user_gesture, was_blocked);
382 }
383
384 void BrowserPluginGuest::CanDownload(
385 RenderViewHost* render_view_host,
386 const GURL& url,
387 const std::string& request_method,
388 const base::Callback<void(bool)>& callback) {
389 if (!delegate_ || !url.is_valid()) {
390 callback.Run(false);
391 return;
392 }
393
394 delegate_->CanDownload(request_method, url, callback);
395 }
396
397 void BrowserPluginGuest::LoadProgressChanged(WebContents* contents,
398 double progress) {
399 if (delegate_)
400 delegate_->LoadProgressed(progress);
401 }
402
403 void BrowserPluginGuest::CloseContents(WebContents* source) {
404 if (!delegate_)
405 return;
406
407 delegate_->Close();
408 }
409
410 JavaScriptDialogManager* BrowserPluginGuest::GetJavaScriptDialogManager() {
411 if (!delegate_)
412 return NULL;
413 return delegate_->GetJavaScriptDialogManager();
414 }
415
416 ColorChooser* BrowserPluginGuest::OpenColorChooser(
417 WebContents* web_contents,
418 SkColor color,
419 const std::vector<ColorSuggestion>& suggestions) {
420 if (!delegate_)
421 return NULL;
422 return delegate_->OpenColorChooser(web_contents, color, suggestions);
423 }
424
425 bool BrowserPluginGuest::HandleContextMenu(const ContextMenuParams& params) {
426 if (!delegate_)
427 return false;
428
429 return delegate_->HandleContextMenu(params);
430 }
431
432 void BrowserPluginGuest::HandleKeyboardEvent(
433 WebContents* source,
434 const NativeWebKeyboardEvent& event) {
435 if (!delegate_)
436 return;
437
438 delegate_->HandleKeyboardEvent(event);
439 }
440
441 void BrowserPluginGuest::SetZoom(double zoom_factor) { 358 void BrowserPluginGuest::SetZoom(double zoom_factor) {
442 if (delegate_) 359 if (delegate_)
443 delegate_->SetZoom(zoom_factor); 360 delegate_->SetZoom(zoom_factor);
444 } 361 }
445 362
446 void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) { 363 void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) {
447 SendMessageToEmbedder( 364 SendMessageToEmbedder(
448 new BrowserPluginMsg_SetMouseLock(instance_id(), allow)); 365 new BrowserPluginMsg_SetMouseLock(instance_id(), allow));
449 } 366 }
450 367
451 void BrowserPluginGuest::FindReply(WebContents* contents,
452 int request_id,
453 int number_of_matches,
454 const gfx::Rect& selection_rect,
455 int active_match_ordinal,
456 bool final_update) {
457 if (!delegate_)
458 return;
459
460 // |selection_rect| is updated to incorporate embedder coordinates.
461 delegate_->FindReply(request_id, number_of_matches,
462 ToGuestRect(selection_rect),
463 active_match_ordinal, final_update);
464 }
465
466 WebContents* BrowserPluginGuest::OpenURLFromTab(WebContents* source,
467 const OpenURLParams& params) {
468 if (!delegate_)
469 return NULL;
470 return delegate_->OpenURLFromTab(source, params);
471 }
472
473 void BrowserPluginGuest::WebContentsCreated(WebContents* source_contents,
474 int opener_render_frame_id,
475 const base::string16& frame_name,
476 const GURL& target_url,
477 WebContents* new_contents) {
478 if (!delegate_)
479 return;
480
481 delegate_->WebContentsCreated(source_contents,
482 opener_render_frame_id,
483 frame_name,
484 target_url,
485 new_contents);
486 }
487
488 void BrowserPluginGuest::RendererUnresponsive(WebContents* source) {
489 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Hung"));
490 if (!delegate_)
491 return;
492 delegate_->RendererUnresponsive();
493 }
494
495 void BrowserPluginGuest::RendererResponsive(WebContents* source) {
496 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Responsive"));
497 if (!delegate_)
498 return;
499 delegate_->RendererResponsive();
500 }
501
502 void BrowserPluginGuest::RunFileChooser(WebContents* web_contents,
503 const FileChooserParams& params) {
504 if (!delegate_)
505 return;
506 delegate_->RunFileChooser(web_contents, params);
507 }
508
509 bool BrowserPluginGuest::ShouldFocusPageAfterCrash() {
510 // Rather than managing focus in WebContentsImpl::RenderViewReady, we will
511 // manage the focus ourselves.
512 return false;
513 }
514
515 WebContentsImpl* BrowserPluginGuest::GetWebContents() const { 368 WebContentsImpl* BrowserPluginGuest::GetWebContents() const {
516 return static_cast<WebContentsImpl*>(web_contents()); 369 return static_cast<WebContentsImpl*>(web_contents());
517 } 370 }
518 371
519 gfx::Point BrowserPluginGuest::GetScreenCoordinates( 372 gfx::Point BrowserPluginGuest::GetScreenCoordinates(
520 const gfx::Point& relative_position) const { 373 const gfx::Point& relative_position) const {
521 gfx::Point screen_pos(relative_position); 374 gfx::Point screen_pos(relative_position);
522 screen_pos += guest_window_rect_.OffsetFromOrigin(); 375 screen_pos += guest_window_rect_.OffsetFromOrigin();
523 return screen_pos; 376 return screen_pos;
524 } 377 }
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
1067 void BrowserPluginGuest::OnShowWidget(int route_id, 920 void BrowserPluginGuest::OnShowWidget(int route_id,
1068 const gfx::Rect& initial_pos) { 921 const gfx::Rect& initial_pos) {
1069 GetWebContents()->ShowCreatedWidget(route_id, initial_pos); 922 GetWebContents()->ShowCreatedWidget(route_id, initial_pos);
1070 } 923 }
1071 924
1072 void BrowserPluginGuest::OnTakeFocus(bool reverse) { 925 void BrowserPluginGuest::OnTakeFocus(bool reverse) {
1073 SendMessageToEmbedder( 926 SendMessageToEmbedder(
1074 new BrowserPluginMsg_AdvanceFocus(instance_id(), reverse)); 927 new BrowserPluginMsg_AdvanceFocus(instance_id(), reverse));
1075 } 928 }
1076 929
1077 void BrowserPluginGuest::RequestMediaAccessPermission(
1078 WebContents* web_contents,
1079 const MediaStreamRequest& request,
1080 const MediaResponseCallback& callback) {
1081 if (!delegate_) {
1082 callback.Run(MediaStreamDevices(),
1083 MEDIA_DEVICE_INVALID_STATE,
1084 scoped_ptr<MediaStreamUI>());
1085 return;
1086 }
1087
1088 delegate_->RequestMediaAccessPermission(request, callback);
1089 }
1090
1091 bool BrowserPluginGuest::PreHandleGestureEvent(
1092 WebContents* source, const blink::WebGestureEvent& event) {
1093 if (!delegate_)
1094 return false;
1095
1096 return delegate_->PreHandleGestureEvent(source, event);
1097 }
1098
1099 void BrowserPluginGuest::OnUpdateRect( 930 void BrowserPluginGuest::OnUpdateRect(
1100 const ViewHostMsg_UpdateRect_Params& params) { 931 const ViewHostMsg_UpdateRect_Params& params) {
1101 BrowserPluginMsg_UpdateRect_Params relay_params; 932 BrowserPluginMsg_UpdateRect_Params relay_params;
1102 relay_params.view_size = params.view_size; 933 relay_params.view_size = params.view_size;
1103 relay_params.scale_factor = params.scale_factor; 934 relay_params.scale_factor = params.scale_factor;
1104 relay_params.is_resize_ack = ViewHostMsg_UpdateRect_Flags::is_resize_ack( 935 relay_params.is_resize_ack = ViewHostMsg_UpdateRect_Flags::is_resize_ack(
1105 params.flags); 936 params.flags);
1106 937
1107 bool size_changed = last_seen_view_size_ != params.view_size; 938 bool size_changed = last_seen_view_size_ != params.view_size;
1108 gfx::Size old_size = last_seen_view_size_; 939 gfx::Size old_size = last_seen_view_size_;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 void BrowserPluginGuest::OnImeCompositionRangeChanged( 971 void BrowserPluginGuest::OnImeCompositionRangeChanged(
1141 const gfx::Range& range, 972 const gfx::Range& range,
1142 const std::vector<gfx::Rect>& character_bounds) { 973 const std::vector<gfx::Rect>& character_bounds) {
1143 static_cast<RenderWidgetHostViewBase*>( 974 static_cast<RenderWidgetHostViewBase*>(
1144 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged( 975 web_contents()->GetRenderWidgetHostView())->ImeCompositionRangeChanged(
1145 range, character_bounds); 976 range, character_bounds);
1146 } 977 }
1147 #endif 978 #endif
1148 979
1149 } // namespace content 980 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698