Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/ptr_util.h" | |
| 12 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
| 13 #include "base/pickle.h" | 14 #include "base/pickle.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 15 #include "build/build_config.h" | 16 #include "build/build_config.h" |
| 16 #include "cc/surfaces/surface.h" | 17 #include "cc/surfaces/surface.h" |
| 17 #include "cc/surfaces/surface_manager.h" | 18 #include "cc/surfaces/surface_manager.h" |
| 18 #include "content/browser/browser_plugin/browser_plugin_embedder.h" | 19 #include "content/browser/browser_plugin/browser_plugin_embedder.h" |
| 19 #include "content/browser/browser_thread_impl.h" | 20 #include "content/browser/browser_thread_impl.h" |
| 20 #include "content/browser/child_process_security_policy_impl.h" | 21 #include "content/browser/child_process_security_policy_impl.h" |
| 21 #include "content/browser/compositor/surface_utils.h" | 22 #include "content/browser/compositor/surface_utils.h" |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 210 RenderWidgetHostViewBase* rwhv = static_cast<RenderWidgetHostViewBase*>( | 211 RenderWidgetHostViewBase* rwhv = static_cast<RenderWidgetHostViewBase*>( |
| 211 rwh->GetView()); | 212 rwh->GetView()); |
| 212 SendTextInputTypeChangedToView(rwhv); | 213 SendTextInputTypeChangedToView(rwhv); |
| 213 } | 214 } |
| 214 | 215 |
| 215 void BrowserPluginGuest::SetTooltipText(const base::string16& tooltip_text) { | 216 void BrowserPluginGuest::SetTooltipText(const base::string16& tooltip_text) { |
| 216 if (tooltip_text == current_tooltip_text_) | 217 if (tooltip_text == current_tooltip_text_) |
| 217 return; | 218 return; |
| 218 current_tooltip_text_ = tooltip_text; | 219 current_tooltip_text_ = tooltip_text; |
| 219 | 220 |
| 220 SendMessageToEmbedder(new BrowserPluginMsg_SetTooltipText( | 221 SendMessageToEmbedder(base::WrapUnique(new BrowserPluginMsg_SetTooltipText( |
|
Avi (use Gerrit)
2016/10/20 15:08:12
SendMessageToEmbedder(base::MakeUnique<BrowserPlug
limasdf
2016/10/20 15:56:19
Done.
| |
| 221 browser_plugin_instance_id_, tooltip_text)); | 222 browser_plugin_instance_id_, tooltip_text))); |
| 222 } | 223 } |
| 223 | 224 |
| 224 bool BrowserPluginGuest::LockMouse(bool allowed) { | 225 bool BrowserPluginGuest::LockMouse(bool allowed) { |
| 225 if (!attached() || (mouse_locked_ == allowed)) | 226 if (!attached() || (mouse_locked_ == allowed)) |
| 226 return false; | 227 return false; |
| 227 | 228 |
| 228 return embedder_web_contents()->GotResponseToLockMouseRequest(allowed); | 229 return embedder_web_contents()->GotResponseToLockMouseRequest(allowed); |
| 229 } | 230 } |
| 230 | 231 |
| 231 WebContentsImpl* BrowserPluginGuest::CreateNewGuestWindow( | 232 WebContentsImpl* BrowserPluginGuest::CreateNewGuestWindow( |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 386 BrowserPluginGuest::GetBrowserPluginGuestManager() const { | 387 BrowserPluginGuest::GetBrowserPluginGuestManager() const { |
| 387 return GetWebContents()->GetBrowserContext()->GetGuestManager(); | 388 return GetWebContents()->GetBrowserContext()->GetGuestManager(); |
| 388 } | 389 } |
| 389 | 390 |
| 390 void BrowserPluginGuest::EmbedderVisibilityChanged(bool visible) { | 391 void BrowserPluginGuest::EmbedderVisibilityChanged(bool visible) { |
| 391 embedder_visible_ = visible; | 392 embedder_visible_ = visible; |
| 392 UpdateVisibility(); | 393 UpdateVisibility(); |
| 393 } | 394 } |
| 394 | 395 |
| 395 void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) { | 396 void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) { |
| 396 SendMessageToEmbedder( | 397 SendMessageToEmbedder(base::WrapUnique( |
| 397 new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), allow)); | 398 new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), allow))); |
|
Avi (use Gerrit)
2016/10/20 15:08:12
base::MakeUnique here too
limasdf
2016/10/20 15:56:19
Done.
| |
| 398 } | 399 } |
| 399 | 400 |
| 400 void BrowserPluginGuest::SetChildFrameSurface( | 401 void BrowserPluginGuest::SetChildFrameSurface( |
| 401 const cc::SurfaceId& surface_id, | 402 const cc::SurfaceId& surface_id, |
| 402 const gfx::Size& frame_size, | 403 const gfx::Size& frame_size, |
| 403 float scale_factor, | 404 float scale_factor, |
| 404 const cc::SurfaceSequence& sequence) { | 405 const cc::SurfaceSequence& sequence) { |
| 405 has_attached_since_surface_set_ = false; | 406 has_attached_since_surface_set_ = false; |
| 406 SendMessageToEmbedder(new BrowserPluginMsg_SetChildFrameSurface( | 407 SendMessageToEmbedder( |
| 407 browser_plugin_instance_id(), surface_id, frame_size, scale_factor, | 408 base::WrapUnique(new BrowserPluginMsg_SetChildFrameSurface( |
|
Avi (use Gerrit)
2016/10/20 15:08:12
base::MakeUnique here too
limasdf
2016/10/20 15:56:19
Done.
| |
| 408 sequence)); | 409 browser_plugin_instance_id(), surface_id, frame_size, scale_factor, |
| 410 sequence))); | |
| 409 } | 411 } |
| 410 | 412 |
| 411 void BrowserPluginGuest::OnSatisfySequence( | 413 void BrowserPluginGuest::OnSatisfySequence( |
| 412 int instance_id, | 414 int instance_id, |
| 413 const cc::SurfaceSequence& sequence) { | 415 const cc::SurfaceSequence& sequence) { |
| 414 std::vector<uint32_t> sequences; | 416 std::vector<uint32_t> sequences; |
| 415 sequences.push_back(sequence.sequence); | 417 sequences.push_back(sequence.sequence); |
| 416 cc::SurfaceManager* manager = GetSurfaceManager(); | 418 cc::SurfaceManager* manager = GetSurfaceManager(); |
| 417 manager->DidSatisfySequences(sequence.frame_sink_id, &sequences); | 419 manager->DidSatisfySequences(sequence.frame_sink_id, &sequences); |
| 418 } | 420 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 485 gfx::Point BrowserPluginGuest::GetScreenCoordinates( | 487 gfx::Point BrowserPluginGuest::GetScreenCoordinates( |
| 486 const gfx::Point& relative_position) const { | 488 const gfx::Point& relative_position) const { |
| 487 if (!attached()) | 489 if (!attached()) |
| 488 return relative_position; | 490 return relative_position; |
| 489 | 491 |
| 490 gfx::Point screen_pos(relative_position); | 492 gfx::Point screen_pos(relative_position); |
| 491 screen_pos += guest_window_rect_.OffsetFromOrigin(); | 493 screen_pos += guest_window_rect_.OffsetFromOrigin(); |
| 492 return screen_pos; | 494 return screen_pos; |
| 493 } | 495 } |
| 494 | 496 |
| 495 void BrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { | 497 void BrowserPluginGuest::SendMessageToEmbedder( |
| 498 std::unique_ptr<IPC::Message> msg) { | |
| 496 // During tests, attache() may be true when there is no owner_web_contents_; | 499 // During tests, attache() may be true when there is no owner_web_contents_; |
| 497 // in this case just queue any messages we receive. | 500 // in this case just queue any messages we receive. |
| 498 if (!attached() || !owner_web_contents_) { | 501 if (!attached() || !owner_web_contents_) { |
| 499 // Some pages such as data URLs, javascript URLs, and about:blank | 502 // Some pages such as data URLs, javascript URLs, and about:blank |
| 500 // do not load external resources and so they load prior to attachment. | 503 // do not load external resources and so they load prior to attachment. |
| 501 // As a result, we must save all these IPCs until attachment and then | 504 // As a result, we must save all these IPCs until attachment and then |
| 502 // forward them so that the embedder gets a chance to see and process | 505 // forward them so that the embedder gets a chance to see and process |
| 503 // the load events. | 506 // the load events. |
| 504 pending_messages_.push_back(linked_ptr<IPC::Message>(msg)); | 507 pending_messages_.push_back(std::move(msg)); |
| 505 return; | 508 return; |
| 506 } | 509 } |
| 507 owner_web_contents_->Send(msg); | 510 owner_web_contents_->Send(msg.release()); |
| 508 } | 511 } |
| 509 | 512 |
| 510 void BrowserPluginGuest::DragSourceEndedAt(int client_x, int client_y, | 513 void BrowserPluginGuest::DragSourceEndedAt(int client_x, int client_y, |
| 511 int screen_x, int screen_y, blink::WebDragOperation operation) { | 514 int screen_x, int screen_y, blink::WebDragOperation operation) { |
| 512 web_contents()->GetRenderViewHost()->DragSourceEndedAt(client_x, client_y, | 515 web_contents()->GetRenderViewHost()->DragSourceEndedAt(client_x, client_y, |
| 513 screen_x, screen_y, operation); | 516 screen_x, screen_y, operation); |
| 514 seen_embedder_drag_source_ended_at_ = true; | 517 seen_embedder_drag_source_ended_at_ = true; |
| 515 EndSystemDragIfApplicable(); | 518 EndSystemDragIfApplicable(); |
| 516 } | 519 } |
| 517 | 520 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 548 } | 551 } |
| 549 | 552 |
| 550 void BrowserPluginGuest::EmbedderSystemDragEnded() { | 553 void BrowserPluginGuest::EmbedderSystemDragEnded() { |
| 551 seen_embedder_system_drag_ended_ = true; | 554 seen_embedder_system_drag_ended_ = true; |
| 552 EndSystemDragIfApplicable(); | 555 EndSystemDragIfApplicable(); |
| 553 } | 556 } |
| 554 | 557 |
| 555 // TODO(wjmaclean): Replace this approach with ones based on std::function | 558 // TODO(wjmaclean): Replace this approach with ones based on std::function |
| 556 // as in https://codereview.chromium.org/1404353004/ once all Chrome platforms | 559 // as in https://codereview.chromium.org/1404353004/ once all Chrome platforms |
| 557 // support this. https://crbug.com/544212 | 560 // support this. https://crbug.com/544212 |
| 558 IPC::Message* BrowserPluginGuest::UpdateInstanceIdIfNecessary( | 561 std::unique_ptr<IPC::Message> BrowserPluginGuest::UpdateInstanceIdIfNecessary( |
| 559 IPC::Message* msg) const { | 562 std::unique_ptr<IPC::Message> msg) const { |
| 560 DCHECK(msg); | 563 DCHECK(msg.get()); |
| 561 | 564 |
| 562 int msg_browser_plugin_instance_id = browser_plugin::kInstanceIDNone; | 565 int msg_browser_plugin_instance_id = browser_plugin::kInstanceIDNone; |
| 563 base::PickleIterator iter(*msg); | 566 base::PickleIterator iter(*msg.get()); |
| 564 if (!iter.ReadInt(&msg_browser_plugin_instance_id) || | 567 if (!iter.ReadInt(&msg_browser_plugin_instance_id) || |
| 565 msg_browser_plugin_instance_id != browser_plugin::kInstanceIDNone) { | 568 msg_browser_plugin_instance_id != browser_plugin::kInstanceIDNone) { |
| 566 return msg; | 569 return msg; |
| 567 } | 570 } |
| 568 | 571 |
| 569 // This method may be called with no browser_plugin_instance_id in tests. | 572 // This method may be called with no browser_plugin_instance_id in tests. |
| 570 if (!browser_plugin_instance_id()) | 573 if (!browser_plugin_instance_id()) |
| 571 return msg; | 574 return msg; |
| 572 | 575 |
| 573 std::unique_ptr<IPC::Message> new_msg( | 576 std::unique_ptr<IPC::Message> new_msg( |
| 574 new IPC::Message(msg->routing_id(), msg->type(), msg->priority())); | 577 new IPC::Message(msg->routing_id(), msg->type(), msg->priority())); |
| 575 new_msg->WriteInt(browser_plugin_instance_id()); | 578 new_msg->WriteInt(browser_plugin_instance_id()); |
| 576 | 579 |
| 577 // Copy remaining payload from original message. | 580 // Copy remaining payload from original message. |
| 578 // TODO(wjmaclean): it would be nice if IPC::PickleIterator had a method | 581 // TODO(wjmaclean): it would be nice if IPC::PickleIterator had a method |
| 579 // like 'RemainingBytes()' so that we don't have to include implementation- | 582 // like 'RemainingBytes()' so that we don't have to include implementation- |
| 580 // specific details like sizeof() in the next line. | 583 // specific details like sizeof() in the next line. |
| 581 DCHECK(msg->payload_size() > sizeof(int)); | 584 DCHECK(msg->payload_size() > sizeof(int)); |
| 582 size_t remaining_bytes = msg->payload_size() - sizeof(int); | 585 size_t remaining_bytes = msg->payload_size() - sizeof(int); |
| 583 const char* data = nullptr; | 586 const char* data = nullptr; |
| 584 bool read_success = iter.ReadBytes(&data, remaining_bytes); | 587 bool read_success = iter.ReadBytes(&data, remaining_bytes); |
| 585 CHECK(read_success) | 588 CHECK(read_success) |
| 586 << "Unexpected failure reading remaining IPC::Message payload."; | 589 << "Unexpected failure reading remaining IPC::Message payload."; |
| 587 bool write_success = new_msg->WriteBytes(data, remaining_bytes); | 590 bool write_success = new_msg->WriteBytes(data, remaining_bytes); |
| 588 CHECK(write_success) | 591 CHECK(write_success) |
| 589 << "Unexpected failure writing remaining IPC::Message payload."; | 592 << "Unexpected failure writing remaining IPC::Message payload."; |
| 590 | 593 |
| 591 delete msg; | 594 return new_msg; |
| 592 return new_msg.release(); | |
| 593 } | 595 } |
| 594 | 596 |
| 595 void BrowserPluginGuest::SendQueuedMessages() { | 597 void BrowserPluginGuest::SendQueuedMessages() { |
| 596 if (!attached()) | 598 if (!attached()) |
| 597 return; | 599 return; |
| 598 | 600 |
| 599 while (!pending_messages_.empty()) { | 601 while (!pending_messages_.empty()) { |
| 600 linked_ptr<IPC::Message> message_ptr = pending_messages_.front(); | 602 std::unique_ptr<IPC::Message> message_ptr = |
| 603 std::move(pending_messages_.front()); | |
| 601 pending_messages_.pop_front(); | 604 pending_messages_.pop_front(); |
| 602 SendMessageToEmbedder( | 605 SendMessageToEmbedder(UpdateInstanceIdIfNecessary(std::move(message_ptr))); |
| 603 UpdateInstanceIdIfNecessary(message_ptr.release())); | |
| 604 } | 606 } |
| 605 } | 607 } |
| 606 | 608 |
| 607 void BrowserPluginGuest::SendTextInputTypeChangedToView( | 609 void BrowserPluginGuest::SendTextInputTypeChangedToView( |
| 608 RenderWidgetHostViewBase* guest_rwhv) { | 610 RenderWidgetHostViewBase* guest_rwhv) { |
| 609 if (!guest_rwhv) | 611 if (!guest_rwhv) |
| 610 return; | 612 return; |
| 611 | 613 |
| 612 if (!owner_web_contents_) { | 614 if (!owner_web_contents_) { |
| 613 // If we were showing an interstitial, then we can end up here during | 615 // If we were showing an interstitial, then we can end up here during |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 636 RenderViewHost* rvh = GetWebContents()->GetRenderViewHost(); | 638 RenderViewHost* rvh = GetWebContents()->GetRenderViewHost(); |
| 637 // TODO(fsamuel): Investigate whether it's possible to update state earlier | 639 // TODO(fsamuel): Investigate whether it's possible to update state earlier |
| 638 // here (see http://crbug.com/158151). | 640 // here (see http://crbug.com/158151). |
| 639 Send(new InputMsg_SetFocus(routing_id(), focused_)); | 641 Send(new InputMsg_SetFocus(routing_id(), focused_)); |
| 640 UpdateVisibility(); | 642 UpdateVisibility(); |
| 641 | 643 |
| 642 // In case we've created a new guest render process after a crash, let the | 644 // In case we've created a new guest render process after a crash, let the |
| 643 // associated BrowserPlugin know. We only need to send this if we're attached, | 645 // associated BrowserPlugin know. We only need to send this if we're attached, |
| 644 // as guest_crashed_ is cleared automatically on attach anyways. | 646 // as guest_crashed_ is cleared automatically on attach anyways. |
| 645 if (attached()) { | 647 if (attached()) { |
| 646 SendMessageToEmbedder( | 648 SendMessageToEmbedder(base::WrapUnique( |
| 647 new BrowserPluginMsg_GuestReady(browser_plugin_instance_id())); | 649 new BrowserPluginMsg_GuestReady(browser_plugin_instance_id()))); |
|
Avi (use Gerrit)
2016/10/20 15:08:12
MakeUnique
limasdf
2016/10/20 15:56:19
Done.
| |
| 648 } | 650 } |
| 649 | 651 |
| 650 RenderWidgetHostImpl::From(rvh->GetWidget()) | 652 RenderWidgetHostImpl::From(rvh->GetWidget()) |
| 651 ->set_hung_renderer_delay( | 653 ->set_hung_renderer_delay( |
| 652 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)); | 654 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)); |
| 653 } | 655 } |
| 654 | 656 |
| 655 void BrowserPluginGuest::RenderProcessGone(base::TerminationStatus status) { | 657 void BrowserPluginGuest::RenderProcessGone(base::TerminationStatus status) { |
| 656 SendMessageToEmbedder( | 658 SendMessageToEmbedder(base::WrapUnique( |
| 657 new BrowserPluginMsg_GuestGone(browser_plugin_instance_id())); | 659 new BrowserPluginMsg_GuestGone(browser_plugin_instance_id()))); |
|
Avi (use Gerrit)
2016/10/20 15:08:12
MakeUnique
limasdf
2016/10/20 15:56:20
Done.
| |
| 658 switch (status) { | 660 switch (status) { |
| 659 #if defined(OS_CHROMEOS) | 661 #if defined(OS_CHROMEOS) |
| 660 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED_BY_OOM: | 662 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED_BY_OOM: |
| 661 #endif | 663 #endif |
| 662 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: | 664 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: |
| 663 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Killed")); | 665 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Killed")); |
| 664 break; | 666 break; |
| 665 case base::TERMINATION_STATUS_PROCESS_CRASHED: | 667 case base::TERMINATION_STATUS_PROCESS_CRASHED: |
| 666 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Crashed")); | 668 RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Crashed")); |
| 667 break; | 669 break; |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 948 return; | 950 return; |
| 949 | 951 |
| 950 guest_visible_ = visible; | 952 guest_visible_ = visible; |
| 951 if (embedder_visible_ && guest_visible_) | 953 if (embedder_visible_ && guest_visible_) |
| 952 GetWebContents()->WasShown(); | 954 GetWebContents()->WasShown(); |
| 953 else | 955 else |
| 954 GetWebContents()->WasHidden(); | 956 GetWebContents()->WasHidden(); |
| 955 } | 957 } |
| 956 | 958 |
| 957 void BrowserPluginGuest::OnUnlockMouse() { | 959 void BrowserPluginGuest::OnUnlockMouse() { |
| 958 SendMessageToEmbedder( | 960 SendMessageToEmbedder(base::WrapUnique( |
| 959 new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), false)); | 961 new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), false))); |
|
Avi (use Gerrit)
2016/10/20 15:08:12
MakeUnique
limasdf
2016/10/20 15:56:19
Done.
| |
| 960 } | 962 } |
| 961 | 963 |
| 962 void BrowserPluginGuest::OnUnlockMouseAck(int browser_plugin_instance_id) { | 964 void BrowserPluginGuest::OnUnlockMouseAck(int browser_plugin_instance_id) { |
| 963 // mouse_locked_ could be false here if the lock attempt was cancelled due | 965 // mouse_locked_ could be false here if the lock attempt was cancelled due |
| 964 // to window focus, or for various other reasons before the guest was informed | 966 // to window focus, or for various other reasons before the guest was informed |
| 965 // of the lock's success. | 967 // of the lock's success. |
| 966 if (mouse_locked_) | 968 if (mouse_locked_) |
| 967 Send(new ViewMsg_MouseLockLost(routing_id())); | 969 Send(new ViewMsg_MouseLockLost(routing_id())); |
| 968 mouse_locked_ = false; | 970 mouse_locked_ = false; |
| 969 } | 971 } |
| 970 | 972 |
| 971 void BrowserPluginGuest::OnUpdateGeometry(int browser_plugin_instance_id, | 973 void BrowserPluginGuest::OnUpdateGeometry(int browser_plugin_instance_id, |
| 972 const gfx::Rect& view_rect) { | 974 const gfx::Rect& view_rect) { |
| 973 // The plugin has moved within the embedder without resizing or the | 975 // The plugin has moved within the embedder without resizing or the |
| 974 // embedder/container's view rect changing. | 976 // embedder/container's view rect changing. |
| 975 guest_window_rect_ = view_rect; | 977 guest_window_rect_ = view_rect; |
| 976 GetWebContents()->SendScreenRects(); | 978 GetWebContents()->SendScreenRects(); |
| 977 } | 979 } |
| 978 | 980 |
| 979 void BrowserPluginGuest::OnHasTouchEventHandlers(bool accept) { | 981 void BrowserPluginGuest::OnHasTouchEventHandlers(bool accept) { |
| 980 SendMessageToEmbedder( | 982 SendMessageToEmbedder( |
| 981 new BrowserPluginMsg_ShouldAcceptTouchEvents( | 983 base::WrapUnique(new BrowserPluginMsg_ShouldAcceptTouchEvents( |
| 982 browser_plugin_instance_id(), accept)); | 984 browser_plugin_instance_id(), accept))); |
|
Avi (use Gerrit)
2016/10/20 15:08:12
MakeUnique
limasdf
2016/10/20 15:56:19
Done.
| |
| 983 } | 985 } |
| 984 | 986 |
| 985 #if defined(OS_MACOSX) | 987 #if defined(OS_MACOSX) |
| 986 void BrowserPluginGuest::OnShowPopup( | 988 void BrowserPluginGuest::OnShowPopup( |
| 987 RenderFrameHost* render_frame_host, | 989 RenderFrameHost* render_frame_host, |
| 988 const FrameHostMsg_ShowPopup_Params& params) { | 990 const FrameHostMsg_ShowPopup_Params& params) { |
| 989 gfx::Rect translated_bounds(params.bounds); | 991 gfx::Rect translated_bounds(params.bounds); |
| 990 translated_bounds.Offset(guest_window_rect_.OffsetFromOrigin()); | 992 translated_bounds.Offset(guest_window_rect_.OffsetFromOrigin()); |
| 991 BrowserPluginPopupMenuHelper popup_menu_helper( | 993 BrowserPluginPopupMenuHelper popup_menu_helper( |
| 992 owner_web_contents_->GetMainFrame(), render_frame_host); | 994 owner_web_contents_->GetMainFrame(), render_frame_host); |
| 993 popup_menu_helper.ShowPopupMenu(translated_bounds, | 995 popup_menu_helper.ShowPopupMenu(translated_bounds, |
| 994 params.item_height, | 996 params.item_height, |
| 995 params.item_font_size, | 997 params.item_font_size, |
| 996 params.selected_item, | 998 params.selected_item, |
| 997 params.popup_items, | 999 params.popup_items, |
| 998 params.right_aligned, | 1000 params.right_aligned, |
| 999 params.allow_multiple_selection); | 1001 params.allow_multiple_selection); |
| 1000 } | 1002 } |
| 1001 #endif | 1003 #endif |
| 1002 | 1004 |
| 1003 void BrowserPluginGuest::OnShowWidget(int route_id, | 1005 void BrowserPluginGuest::OnShowWidget(int route_id, |
| 1004 const gfx::Rect& initial_rect) { | 1006 const gfx::Rect& initial_rect) { |
| 1005 int process_id = GetWebContents()->GetRenderProcessHost()->GetID(); | 1007 int process_id = GetWebContents()->GetRenderProcessHost()->GetID(); |
| 1006 GetWebContents()->ShowCreatedWidget(process_id, route_id, initial_rect); | 1008 GetWebContents()->ShowCreatedWidget(process_id, route_id, initial_rect); |
| 1007 } | 1009 } |
| 1008 | 1010 |
| 1009 void BrowserPluginGuest::OnTakeFocus(bool reverse) { | 1011 void BrowserPluginGuest::OnTakeFocus(bool reverse) { |
| 1010 SendMessageToEmbedder( | 1012 SendMessageToEmbedder(base::WrapUnique(new BrowserPluginMsg_AdvanceFocus( |
|
Avi (use Gerrit)
2016/10/20 15:08:12
MakeUnique
limasdf
2016/10/20 15:56:19
Done.
| |
| 1011 new BrowserPluginMsg_AdvanceFocus(browser_plugin_instance_id(), reverse)); | 1013 browser_plugin_instance_id(), reverse))); |
| 1012 } | 1014 } |
| 1013 | 1015 |
| 1014 void BrowserPluginGuest::OnTextInputStateChanged(const TextInputState& params) { | 1016 void BrowserPluginGuest::OnTextInputStateChanged(const TextInputState& params) { |
| 1015 // Save the state of text input so we can restore it on focus. | 1017 // Save the state of text input so we can restore it on focus. |
| 1016 last_text_input_state_.reset(new TextInputState(params)); | 1018 last_text_input_state_.reset(new TextInputState(params)); |
| 1017 | 1019 |
| 1018 SendTextInputTypeChangedToView( | 1020 SendTextInputTypeChangedToView( |
| 1019 static_cast<RenderWidgetHostViewBase*>( | 1021 static_cast<RenderWidgetHostViewBase*>( |
| 1020 web_contents()->GetRenderWidgetHostView())); | 1022 web_contents()->GetRenderWidgetHostView())); |
| 1021 } | 1023 } |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1034 range, character_bounds); | 1036 range, character_bounds); |
| 1035 } | 1037 } |
| 1036 #endif | 1038 #endif |
| 1037 | 1039 |
| 1038 void BrowserPluginGuest::SetContextMenuPosition(const gfx::Point& position) { | 1040 void BrowserPluginGuest::SetContextMenuPosition(const gfx::Point& position) { |
| 1039 if (delegate_) | 1041 if (delegate_) |
| 1040 delegate_->SetContextMenuPosition(position); | 1042 delegate_->SetContextMenuPosition(position); |
| 1041 } | 1043 } |
| 1042 | 1044 |
| 1043 } // namespace content | 1045 } // namespace content |
| OLD | NEW |