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 <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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 // static | 57 // static |
58 BrowserPluginHostFactory* BrowserPluginGuest::factory_ = NULL; | 58 BrowserPluginHostFactory* BrowserPluginGuest::factory_ = NULL; |
59 | 59 |
60 // Parent class for the various types of permission requests, each of which | 60 // Parent class for the various types of permission requests, each of which |
61 // should be able to handle the response to their permission request. | 61 // should be able to handle the response to their permission request. |
62 class BrowserPluginGuest::PermissionRequest : | 62 class BrowserPluginGuest::PermissionRequest : |
63 public base::RefCounted<BrowserPluginGuest::PermissionRequest> { | 63 public base::RefCounted<BrowserPluginGuest::PermissionRequest> { |
64 public: | 64 public: |
65 virtual void Respond(bool should_allow, const std::string& user_input) = 0; | 65 virtual void Respond(bool should_allow, const std::string& user_input) = 0; |
66 virtual bool AllowedByDefault() const { | 66 virtual bool AllowedByDefault() const { |
67 return false; | 67 return false; |
68 } | 68 } |
69 protected: | 69 protected: |
70 PermissionRequest() { | 70 PermissionRequest() { |
71 RecordAction(UserMetricsAction("BrowserPlugin.Guest.PermissionRequest")); | 71 RecordAction(UserMetricsAction("BrowserPlugin.Guest.PermissionRequest")); |
72 } | 72 } |
73 virtual ~PermissionRequest() {} | 73 virtual ~PermissionRequest() {} |
74 // Friend RefCounted so that the dtor can be non-public. | 74 // Friend RefCounted so that the dtor can be non-public. |
75 friend class base::RefCounted<BrowserPluginGuest::PermissionRequest>; | 75 friend class base::RefCounted<BrowserPluginGuest::PermissionRequest>; |
76 }; | 76 }; |
77 | 77 |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 RenderViewHost* render_view_host, | 291 RenderViewHost* render_view_host, |
292 int url_request_id) { | 292 int url_request_id) { |
293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
294 | 294 |
295 int render_process_id = render_view_host->GetProcess()->GetID(); | 295 int render_process_id = render_view_host->GetProcess()->GetID(); |
296 GlobalRequestID global_id(render_process_id, url_request_id); | 296 GlobalRequestID global_id(render_process_id, url_request_id); |
297 net::URLRequest* url_request = | 297 net::URLRequest* url_request = |
298 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); | 298 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); |
299 if (url_request) | 299 if (url_request) |
300 return url_request->url().possibly_invalid_spec(); | 300 return url_request->url().possibly_invalid_spec(); |
301 return std::string(); | 301 return ""; |
302 } | 302 } |
303 | 303 |
304 } // namespace | 304 } // namespace |
305 | 305 |
306 class BrowserPluginGuest::EmbedderWebContentsObserver | 306 class BrowserPluginGuest::EmbedderWebContentsObserver |
307 : public WebContentsObserver { | 307 : public WebContentsObserver { |
308 public: | 308 public: |
309 explicit EmbedderWebContentsObserver(BrowserPluginGuest* guest) | 309 explicit EmbedderWebContentsObserver(BrowserPluginGuest* guest) |
310 : WebContentsObserver(guest->embedder_web_contents()), | 310 : WebContentsObserver(guest->embedder_web_contents()), |
311 browser_plugin_guest_(guest) { | 311 browser_plugin_guest_(guest) { |
(...skipping 16 matching lines...) Expand all Loading... |
328 } | 328 } |
329 | 329 |
330 private: | 330 private: |
331 BrowserPluginGuest* browser_plugin_guest_; | 331 BrowserPluginGuest* browser_plugin_guest_; |
332 | 332 |
333 DISALLOW_COPY_AND_ASSIGN(EmbedderWebContentsObserver); | 333 DISALLOW_COPY_AND_ASSIGN(EmbedderWebContentsObserver); |
334 }; | 334 }; |
335 | 335 |
336 BrowserPluginGuest::BrowserPluginGuest( | 336 BrowserPluginGuest::BrowserPluginGuest( |
337 int instance_id, | 337 int instance_id, |
| 338 bool has_render_view, |
338 WebContentsImpl* web_contents, | 339 WebContentsImpl* web_contents, |
339 BrowserPluginGuest* opener, | 340 BrowserPluginGuest* opener) |
340 bool has_render_view) | |
341 : WebContentsObserver(web_contents), | 341 : WebContentsObserver(web_contents), |
342 weak_ptr_factory_(this), | 342 weak_ptr_factory_(this), |
343 embedder_web_contents_(NULL), | 343 embedder_web_contents_(NULL), |
344 instance_id_(instance_id), | 344 instance_id_(instance_id), |
345 damage_buffer_sequence_id_(0), | 345 damage_buffer_sequence_id_(0), |
346 damage_buffer_size_(0), | 346 damage_buffer_size_(0), |
347 damage_buffer_scale_factor_(1.0f), | 347 damage_buffer_scale_factor_(1.0f), |
348 guest_device_scale_factor_(1.0f), | 348 guest_device_scale_factor_(1.0f), |
349 guest_hang_timeout_( | 349 guest_hang_timeout_( |
350 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), | 350 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), |
(...skipping 30 matching lines...) Expand all Loading... |
381 // pending_new_windows_ set. To avoid mutating the set while iterating, we | 381 // pending_new_windows_ set. To avoid mutating the set while iterating, we |
382 // create a copy of the pending new windows set and iterate over the copy. | 382 // create a copy of the pending new windows set and iterate over the copy. |
383 PendingWindowMap pending_new_windows(pending_new_windows_); | 383 PendingWindowMap pending_new_windows(pending_new_windows_); |
384 // Clean up unattached new windows opened by this guest. | 384 // Clean up unattached new windows opened by this guest. |
385 for (PendingWindowMap::const_iterator it = pending_new_windows.begin(); | 385 for (PendingWindowMap::const_iterator it = pending_new_windows.begin(); |
386 it != pending_new_windows.end(); ++it) { | 386 it != pending_new_windows.end(); ++it) { |
387 it->first->Destroy(); | 387 it->first->Destroy(); |
388 } | 388 } |
389 // All pending windows should be removed from the set after Destroy() is | 389 // All pending windows should be removed from the set after Destroy() is |
390 // called on all of them. | 390 // called on all of them. |
391 DCHECK_EQ(0ul, pending_new_windows_.size()); | 391 DCHECK(pending_new_windows_.empty()); |
392 } | 392 } |
393 | 393 |
394 void BrowserPluginGuest::LoadURLWithParams(WebContents* web_contents, | 394 void BrowserPluginGuest::LoadURLWithParams(const GURL& url, |
395 const GURL& url, | |
396 const Referrer& referrer, | 395 const Referrer& referrer, |
397 PageTransition transition_type) { | 396 PageTransition transition_type, |
| 397 WebContents* web_contents) { |
398 NavigationController::LoadURLParams load_url_params(url); | 398 NavigationController::LoadURLParams load_url_params(url); |
399 load_url_params.referrer = referrer; | 399 load_url_params.referrer = referrer; |
400 load_url_params.transition_type = transition_type; | 400 load_url_params.transition_type = transition_type; |
401 load_url_params.extra_headers = std::string(); | 401 load_url_params.extra_headers = std::string(); |
402 if (delegate_ && delegate_->IsOverridingUserAgent()) { | 402 if (delegate_ && delegate_->IsOverridingUserAgent()) { |
403 load_url_params.override_user_agent = | 403 load_url_params.override_user_agent = |
404 NavigationController::UA_OVERRIDE_TRUE; | 404 NavigationController::UA_OVERRIDE_TRUE; |
405 } | 405 } |
406 web_contents->GetController().LoadURLWithParams(load_url_params); | 406 web_contents->GetController().LoadURLWithParams(load_url_params); |
407 } | 407 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 GetWebContents()->GetBrowserPluginGuestManager()->CreateGuest( | 471 GetWebContents()->GetBrowserPluginGuestManager()->CreateGuest( |
472 GetWebContents()->GetSiteInstance(), instance_id, | 472 GetWebContents()->GetSiteInstance(), instance_id, |
473 attach_params, extra_params.Pass()); | 473 attach_params, extra_params.Pass()); |
474 new_guest->opener_ = AsWeakPtr(); | 474 new_guest->opener_ = AsWeakPtr(); |
475 | 475 |
476 // Take ownership of |new_guest|. | 476 // Take ownership of |new_guest|. |
477 pending_new_windows_.insert( | 477 pending_new_windows_.insert( |
478 std::make_pair(new_guest, NewWindowInfo(params.url, std::string()))); | 478 std::make_pair(new_guest, NewWindowInfo(params.url, std::string()))); |
479 | 479 |
480 // Request permission to show the new window. | 480 // Request permission to show the new window. |
481 RequestNewWindowPermission( | 481 RequestNewWindowPermission(params.disposition, gfx::Rect(), |
482 new_guest->GetWebContents(), | 482 params.user_gesture, new_guest->GetWebContents()); |
483 params.disposition, | |
484 gfx::Rect(), | |
485 params.user_gesture); | |
486 | 483 |
487 return new_guest; | 484 return new_guest; |
488 } | 485 } |
489 | 486 |
490 void BrowserPluginGuest::EmbedderDestroyed() { | 487 void BrowserPluginGuest::EmbedderDestroyed() { |
491 embedder_web_contents_ = NULL; | 488 embedder_web_contents_ = NULL; |
492 if (delegate_) | 489 if (delegate_) |
493 delegate_->EmbedderDestroyed(); | 490 delegate_->EmbedderDestroyed(); |
494 Destroy(); | 491 Destroy(); |
495 } | 492 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetVisibility, OnSetVisibility) | 526 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetVisibility, OnSetVisibility) |
530 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UnlockMouse_ACK, OnUnlockMouseAck) | 527 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UnlockMouse_ACK, OnUnlockMouseAck) |
531 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry) | 528 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateGeometry, OnUpdateGeometry) |
532 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateRect_ACK, OnUpdateRectACK) | 529 IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_UpdateRect_ACK, OnUpdateRectACK) |
533 IPC_MESSAGE_UNHANDLED(handled = false) | 530 IPC_MESSAGE_UNHANDLED(handled = false) |
534 IPC_END_MESSAGE_MAP() | 531 IPC_END_MESSAGE_MAP() |
535 return handled; | 532 return handled; |
536 } | 533 } |
537 | 534 |
538 void BrowserPluginGuest::Initialize( | 535 void BrowserPluginGuest::Initialize( |
539 WebContentsImpl* embedder_web_contents, | 536 const BrowserPluginHostMsg_Attach_Params& params, |
540 const BrowserPluginHostMsg_Attach_Params& params) { | 537 WebContentsImpl* embedder_web_contents) { |
541 focused_ = params.focused; | 538 focused_ = params.focused; |
542 guest_visible_ = params.visible; | 539 guest_visible_ = params.visible; |
543 guest_window_rect_ = params.resize_guest_params.view_rect; | 540 guest_window_rect_ = params.resize_guest_params.view_rect; |
544 | 541 |
545 if (!params.name.empty()) | 542 if (!params.name.empty()) |
546 name_ = params.name; | 543 name_ = params.name; |
547 auto_size_enabled_ = params.auto_size_params.enable; | 544 auto_size_enabled_ = params.auto_size_params.enable; |
548 max_auto_size_ = params.auto_size_params.max_size; | 545 max_auto_size_ = params.auto_size_params.max_size; |
549 min_auto_size_ = params.auto_size_params.min_size; | 546 min_auto_size_ = params.auto_size_params.min_size; |
550 | 547 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
637 BrowserPluginGuest* BrowserPluginGuest::Create( | 634 BrowserPluginGuest* BrowserPluginGuest::Create( |
638 int instance_id, | 635 int instance_id, |
639 SiteInstance* guest_site_instance, | 636 SiteInstance* guest_site_instance, |
640 WebContentsImpl* web_contents, | 637 WebContentsImpl* web_contents, |
641 scoped_ptr<base::DictionaryValue> extra_params) { | 638 scoped_ptr<base::DictionaryValue> extra_params) { |
642 RecordAction(UserMetricsAction("BrowserPlugin.Guest.Create")); | 639 RecordAction(UserMetricsAction("BrowserPlugin.Guest.Create")); |
643 BrowserPluginGuest* guest = NULL; | 640 BrowserPluginGuest* guest = NULL; |
644 if (factory_) { | 641 if (factory_) { |
645 guest = factory_->CreateBrowserPluginGuest(instance_id, web_contents); | 642 guest = factory_->CreateBrowserPluginGuest(instance_id, web_contents); |
646 } else { | 643 } else { |
647 guest = new BrowserPluginGuest(instance_id, web_contents, NULL, false); | 644 guest = new BrowserPluginGuest(instance_id, false, web_contents, NULL); |
648 } | 645 } |
649 guest->extra_attach_params_.reset(extra_params->DeepCopy()); | 646 guest->extra_attach_params_.reset(extra_params->DeepCopy()); |
650 web_contents->SetBrowserPluginGuest(guest); | 647 web_contents->SetBrowserPluginGuest(guest); |
651 BrowserPluginGuestDelegate* delegate = NULL; | 648 BrowserPluginGuestDelegate* delegate = NULL; |
652 GetContentClient()->browser()->GuestWebContentsCreated( | 649 GetContentClient()->browser()->GuestWebContentsCreated( |
653 guest_site_instance, web_contents, NULL, &delegate, extra_params.Pass()); | 650 guest_site_instance, web_contents, NULL, &delegate, extra_params.Pass()); |
654 guest->SetDelegate(delegate); | 651 guest->SetDelegate(delegate); |
655 return guest; | 652 return guest; |
656 } | 653 } |
657 | 654 |
658 // static | 655 // static |
659 BrowserPluginGuest* BrowserPluginGuest::CreateWithOpener( | 656 BrowserPluginGuest* BrowserPluginGuest::CreateWithOpener( |
660 int instance_id, | 657 int instance_id, |
| 658 bool has_render_view, |
661 WebContentsImpl* web_contents, | 659 WebContentsImpl* web_contents, |
662 BrowserPluginGuest* opener, | 660 BrowserPluginGuest* opener) { |
663 bool has_render_view) { | |
664 BrowserPluginGuest* guest = | 661 BrowserPluginGuest* guest = |
665 new BrowserPluginGuest( | 662 new BrowserPluginGuest( |
666 instance_id, web_contents, opener, has_render_view); | 663 instance_id, has_render_view, web_contents, opener); |
667 web_contents->SetBrowserPluginGuest(guest); | 664 web_contents->SetBrowserPluginGuest(guest); |
668 BrowserPluginGuestDelegate* delegate = NULL; | 665 BrowserPluginGuestDelegate* delegate = NULL; |
669 GetContentClient()->browser()->GuestWebContentsCreated( | 666 GetContentClient()->browser()->GuestWebContentsCreated( |
670 opener->GetWebContents()->GetSiteInstance(), | 667 opener->GetWebContents()->GetSiteInstance(), |
671 web_contents, opener->GetWebContents(), &delegate, | 668 web_contents, opener->GetWebContents(), &delegate, |
672 scoped_ptr<base::DictionaryValue>()); | 669 scoped_ptr<base::DictionaryValue>()); |
673 guest->SetDelegate(delegate); | 670 guest->SetDelegate(delegate); |
674 return guest; | 671 return guest; |
675 } | 672 } |
676 | 673 |
(...skipping 18 matching lines...) Expand all Loading... |
695 } | 692 } |
696 | 693 |
697 void BrowserPluginGuest::AddNewContents(WebContents* source, | 694 void BrowserPluginGuest::AddNewContents(WebContents* source, |
698 WebContents* new_contents, | 695 WebContents* new_contents, |
699 WindowOpenDisposition disposition, | 696 WindowOpenDisposition disposition, |
700 const gfx::Rect& initial_pos, | 697 const gfx::Rect& initial_pos, |
701 bool user_gesture, | 698 bool user_gesture, |
702 bool* was_blocked) { | 699 bool* was_blocked) { |
703 if (was_blocked) | 700 if (was_blocked) |
704 *was_blocked = false; | 701 *was_blocked = false; |
705 RequestNewWindowPermission(static_cast<WebContentsImpl*>(new_contents), | 702 RequestNewWindowPermission(disposition, initial_pos, user_gesture, |
706 disposition, initial_pos, user_gesture); | 703 static_cast<WebContentsImpl*>(new_contents)); |
707 } | 704 } |
708 | 705 |
709 void BrowserPluginGuest::CanDownload( | 706 void BrowserPluginGuest::CanDownload( |
710 RenderViewHost* render_view_host, | 707 RenderViewHost* render_view_host, |
711 int request_id, | 708 int request_id, |
712 const std::string& request_method, | 709 const std::string& request_method, |
713 const base::Callback<void(bool)>& callback) { | 710 const base::Callback<void(bool)>& callback) { |
714 BrowserThread::PostTaskAndReplyWithResult( | 711 BrowserThread::PostTaskAndReplyWithResult( |
715 BrowserThread::IO, FROM_HERE, | 712 BrowserThread::IO, FROM_HERE, |
716 base::Bind(&RetrieveDownloadURLFromRequestId, | 713 base::Bind(&RetrieveDownloadURLFromRequestId, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 if (it == opener()->pending_new_windows_.end()) | 776 if (it == opener()->pending_new_windows_.end()) |
780 return NULL; | 777 return NULL; |
781 const NewWindowInfo& old_target_url = it->second; | 778 const NewWindowInfo& old_target_url = it->second; |
782 NewWindowInfo new_window_info(params.url, old_target_url.name); | 779 NewWindowInfo new_window_info(params.url, old_target_url.name); |
783 new_window_info.changed = new_window_info.url != old_target_url.url; | 780 new_window_info.changed = new_window_info.url != old_target_url.url; |
784 it->second = new_window_info; | 781 it->second = new_window_info; |
785 return NULL; | 782 return NULL; |
786 } | 783 } |
787 if (params.disposition == CURRENT_TAB) { | 784 if (params.disposition == CURRENT_TAB) { |
788 // This can happen for cross-site redirects. | 785 // This can happen for cross-site redirects. |
789 LoadURLWithParams(source, params.url, params.referrer, params.transition); | 786 LoadURLWithParams(params.url, params.referrer, params.transition, source); |
790 return source; | 787 return source; |
791 } | 788 } |
792 | 789 |
793 return CreateNewGuestWindow(params)->GetWebContents(); | 790 return CreateNewGuestWindow(params)->GetWebContents(); |
794 } | 791 } |
795 | 792 |
796 void BrowserPluginGuest::WebContentsCreated(WebContents* source_contents, | 793 void BrowserPluginGuest::WebContentsCreated(WebContents* source_contents, |
797 int64 source_frame_id, | 794 int64 source_frame_id, |
798 const string16& frame_name, | 795 const string16& frame_name, |
799 const GURL& target_url, | 796 const GURL& target_url, |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 screen_pos += guest_window_rect_.OffsetFromOrigin(); | 878 screen_pos += guest_window_rect_.OffsetFromOrigin(); |
882 return screen_pos; | 879 return screen_pos; |
883 } | 880 } |
884 | 881 |
885 bool BrowserPluginGuest::InAutoSizeBounds(const gfx::Size& size) const { | 882 bool BrowserPluginGuest::InAutoSizeBounds(const gfx::Size& size) const { |
886 return size.width() <= max_auto_size_.width() && | 883 return size.width() <= max_auto_size_.width() && |
887 size.height() <= max_auto_size_.height(); | 884 size.height() <= max_auto_size_.height(); |
888 } | 885 } |
889 | 886 |
890 void BrowserPluginGuest::RequestNewWindowPermission( | 887 void BrowserPluginGuest::RequestNewWindowPermission( |
891 WebContentsImpl* new_contents, | |
892 WindowOpenDisposition disposition, | 888 WindowOpenDisposition disposition, |
893 const gfx::Rect& initial_bounds, | 889 const gfx::Rect& initial_bounds, |
894 bool user_gesture) { | 890 bool user_gesture, |
| 891 WebContentsImpl* new_contents) { |
895 BrowserPluginGuest* guest = new_contents->GetBrowserPluginGuest(); | 892 BrowserPluginGuest* guest = new_contents->GetBrowserPluginGuest(); |
896 PendingWindowMap::iterator it = pending_new_windows_.find(guest); | 893 PendingWindowMap::iterator it = pending_new_windows_.find(guest); |
897 if (it == pending_new_windows_.end()) | 894 if (it == pending_new_windows_.end()) |
898 return; | 895 return; |
899 const NewWindowInfo& new_window_info = it->second; | 896 const NewWindowInfo& new_window_info = it->second; |
900 | 897 |
901 base::DictionaryValue request_info; | 898 base::DictionaryValue request_info; |
902 request_info.Set(browser_plugin::kInitialHeight, | 899 request_info.Set(browser_plugin::kInitialHeight, |
903 base::Value::CreateIntegerValue(initial_bounds.height())); | 900 base::Value::CreateIntegerValue(initial_bounds.height())); |
904 request_info.Set(browser_plugin::kInitialWidth, | 901 request_info.Set(browser_plugin::kInitialWidth, |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 case BrowserPluginHostMsg_SetAutoSize::ID: | 1114 case BrowserPluginHostMsg_SetAutoSize::ID: |
1118 case BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent::ID: | 1115 case BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent::ID: |
1119 case BrowserPluginHostMsg_SetFocus::ID: | 1116 case BrowserPluginHostMsg_SetFocus::ID: |
1120 case BrowserPluginHostMsg_SetName::ID: | 1117 case BrowserPluginHostMsg_SetName::ID: |
1121 case BrowserPluginHostMsg_SetVisibility::ID: | 1118 case BrowserPluginHostMsg_SetVisibility::ID: |
1122 case BrowserPluginHostMsg_UnlockMouse_ACK::ID: | 1119 case BrowserPluginHostMsg_UnlockMouse_ACK::ID: |
1123 case BrowserPluginHostMsg_UpdateGeometry::ID: | 1120 case BrowserPluginHostMsg_UpdateGeometry::ID: |
1124 case BrowserPluginHostMsg_UpdateRect_ACK::ID: | 1121 case BrowserPluginHostMsg_UpdateRect_ACK::ID: |
1125 return true; | 1122 return true; |
1126 default: | 1123 default: |
1127 break; | 1124 return false; |
1128 } | 1125 } |
1129 return false; | |
1130 } | 1126 } |
1131 | 1127 |
1132 bool BrowserPluginGuest::OnMessageReceived(const IPC::Message& message) { | 1128 bool BrowserPluginGuest::OnMessageReceived(const IPC::Message& message) { |
1133 bool handled = true; | 1129 bool handled = true; |
1134 IPC_BEGIN_MESSAGE_MAP(BrowserPluginGuest, message) | 1130 IPC_BEGIN_MESSAGE_MAP(BrowserPluginGuest, message) |
1135 IPC_MESSAGE_HANDLER(ViewHostMsg_HasTouchEventHandlers, | 1131 IPC_MESSAGE_HANDLER(ViewHostMsg_HasTouchEventHandlers, |
1136 OnHasTouchEventHandlers) | 1132 OnHasTouchEventHandlers) |
1137 IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnLockMouse) | 1133 IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnLockMouse) |
1138 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor) | 1134 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor) |
1139 #if defined(OS_MACOSX) | 1135 #if defined(OS_MACOSX) |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1193 // Once a new guest is attached to the DOM of the embedder page, then the | 1189 // Once a new guest is attached to the DOM of the embedder page, then the |
1194 // lifetime of the new guest is no longer managed by the opener guest. | 1190 // lifetime of the new guest is no longer managed by the opener guest. |
1195 opener()->pending_new_windows_.erase(this); | 1191 opener()->pending_new_windows_.erase(this); |
1196 | 1192 |
1197 // The guest's frame name takes precedence over the BrowserPlugin's name. | 1193 // The guest's frame name takes precedence over the BrowserPlugin's name. |
1198 // The guest's frame name is assigned in | 1194 // The guest's frame name is assigned in |
1199 // BrowserPluginGuest::WebContentsCreated. | 1195 // BrowserPluginGuest::WebContentsCreated. |
1200 if (!name_.empty()) | 1196 if (!name_.empty()) |
1201 params.name.clear(); | 1197 params.name.clear(); |
1202 | 1198 |
1203 Initialize(embedder_web_contents, params); | 1199 Initialize(params, embedder_web_contents); |
1204 | 1200 |
1205 SendQueuedMessages(); | 1201 SendQueuedMessages(); |
1206 | 1202 |
1207 RecordAction(UserMetricsAction("BrowserPlugin.Guest.Attached")); | 1203 RecordAction(UserMetricsAction("BrowserPlugin.Guest.Attached")); |
1208 } | 1204 } |
1209 | 1205 |
1210 void BrowserPluginGuest::OnCompositorFrameACK( | 1206 void BrowserPluginGuest::OnCompositorFrameACK( |
1211 int instance_id, | 1207 int instance_id, |
1212 int route_id, | 1208 int route_id, |
1213 uint32 output_surface_id, | 1209 uint32 output_surface_id, |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1370 | 1366 |
1371 GURL validated_url(url); | 1367 GURL validated_url(url); |
1372 RenderViewHost::FilterURL( | 1368 RenderViewHost::FilterURL( |
1373 GetWebContents()->GetRenderProcessHost(), | 1369 GetWebContents()->GetRenderProcessHost(), |
1374 false, | 1370 false, |
1375 &validated_url); | 1371 &validated_url); |
1376 // As guests do not swap processes on navigation, only navigations to | 1372 // As guests do not swap processes on navigation, only navigations to |
1377 // normal web URLs are supported. No protocol handlers are installed for | 1373 // normal web URLs are supported. No protocol handlers are installed for |
1378 // other schemes (e.g., WebUI or extensions), and no permissions or bindings | 1374 // other schemes (e.g., WebUI or extensions), and no permissions or bindings |
1379 // can be granted to the guest process. | 1375 // can be granted to the guest process. |
1380 LoadURLWithParams(GetWebContents(), validated_url, Referrer(), | 1376 LoadURLWithParams(validated_url, Referrer(), PAGE_TRANSITION_AUTO_TOPLEVEL, |
1381 PAGE_TRANSITION_AUTO_TOPLEVEL); | 1377 GetWebContents()); |
1382 } | 1378 } |
1383 | 1379 |
1384 void BrowserPluginGuest::OnPluginDestroyed(int instance_id) { | 1380 void BrowserPluginGuest::OnPluginDestroyed(int instance_id) { |
1385 Destroy(); | 1381 Destroy(); |
1386 } | 1382 } |
1387 | 1383 |
1388 void BrowserPluginGuest::OnResizeGuest( | 1384 void BrowserPluginGuest::OnResizeGuest( |
1389 int instance_id, | 1385 int instance_id, |
1390 const BrowserPluginHostMsg_ResizeGuest_Params& params) { | 1386 const BrowserPluginHostMsg_ResizeGuest_Params& params) { |
1391 if (!params.size_changed) | 1387 if (!params.size_changed) |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1731 request_info.Set(browser_plugin::kRequestMethod, | 1727 request_info.Set(browser_plugin::kRequestMethod, |
1732 base::Value::CreateStringValue(request_method)); | 1728 base::Value::CreateStringValue(request_method)); |
1733 request_info.Set(browser_plugin::kURL, base::Value::CreateStringValue(url)); | 1729 request_info.Set(browser_plugin::kURL, base::Value::CreateStringValue(url)); |
1734 | 1730 |
1735 RequestPermission(BROWSER_PLUGIN_PERMISSION_TYPE_DOWNLOAD, | 1731 RequestPermission(BROWSER_PLUGIN_PERMISSION_TYPE_DOWNLOAD, |
1736 new DownloadRequest(callback), | 1732 new DownloadRequest(callback), |
1737 request_info); | 1733 request_info); |
1738 } | 1734 } |
1739 | 1735 |
1740 } // namespace content | 1736 } // namespace content |
OLD | NEW |