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

Side by Side Diff: components/guest_view/browser/guest_view_base.cc

Issue 2019423005: Move //components/ui/zoom to top-level under //components (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 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 | « components/guest_view/browser/guest_view_base.h ('k') | components/ui/zoom/BUILD.gn » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/guest_view/browser/guest_view_base.h" 5 #include "components/guest_view/browser/guest_view_base.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "components/guest_view/browser/guest_view_event.h" 13 #include "components/guest_view/browser/guest_view_event.h"
14 #include "components/guest_view/browser/guest_view_manager.h" 14 #include "components/guest_view/browser/guest_view_manager.h"
15 #include "components/guest_view/common/guest_view_constants.h" 15 #include "components/guest_view/common/guest_view_constants.h"
16 #include "components/guest_view/common/guest_view_messages.h" 16 #include "components/guest_view/common/guest_view_messages.h"
17 #include "components/ui/zoom/page_zoom.h" 17 #include "components/zoom/page_zoom.h"
18 #include "components/ui/zoom/zoom_controller.h" 18 #include "components/zoom/zoom_controller.h"
19 #include "content/public/browser/navigation_details.h" 19 #include "content/public/browser/navigation_details.h"
20 #include "content/public/browser/render_frame_host.h" 20 #include "content/public/browser/render_frame_host.h"
21 #include "content/public/browser/render_process_host.h" 21 #include "content/public/browser/render_process_host.h"
22 #include "content/public/browser/render_view_host.h" 22 #include "content/public/browser/render_view_host.h"
23 #include "content/public/browser/render_widget_host_view.h" 23 #include "content/public/browser/render_widget_host_view.h"
24 #include "content/public/browser/web_contents.h" 24 #include "content/public/browser/web_contents.h"
25 #include "content/public/common/browser_plugin_guest_mode.h" 25 #include "content/public/common/browser_plugin_guest_mode.h"
26 #include "content/public/common/page_zoom.h" 26 #include "content/public/common/page_zoom.h"
27 #include "content/public/common/url_constants.h" 27 #include "content/public/common/url_constants.h"
28 #include "third_party/WebKit/public/web/WebInputEvent.h" 28 #include "third_party/WebKit/public/web/WebInputEvent.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 211
212 // Create a ZoomController to allow the guest's contents to be zoomed. 212 // Create a ZoomController to allow the guest's contents to be zoomed.
213 // Do this before adding the GuestView as a WebContents Observer so that 213 // Do this before adding the GuestView as a WebContents Observer so that
214 // the GuestView and its derived classes can re-configure the ZoomController 214 // the GuestView and its derived classes can re-configure the ZoomController
215 // after the latter has handled WebContentsObserver events (observers are 215 // after the latter has handled WebContentsObserver events (observers are
216 // notified of events in the same order they are added as observers). For 216 // notified of events in the same order they are added as observers). For
217 // example, GuestViewBase may wish to put its guest into isolated zoom mode 217 // example, GuestViewBase may wish to put its guest into isolated zoom mode
218 // in DidNavigateMainFrame, but since ZoomController always resets to default 218 // in DidNavigateMainFrame, but since ZoomController always resets to default
219 // zoom mode on this event, GuestViewBase would need to do so after 219 // zoom mode on this event, GuestViewBase would need to do so after
220 // ZoomController::DidNavigateMainFrame has completed. 220 // ZoomController::DidNavigateMainFrame has completed.
221 ui_zoom::ZoomController::CreateForWebContents(guest_web_contents); 221 zoom::ZoomController::CreateForWebContents(guest_web_contents);
222 222
223 // At this point, we have just created the guest WebContents, we need to add 223 // At this point, we have just created the guest WebContents, we need to add
224 // an observer to the owner WebContents. This observer will be responsible 224 // an observer to the owner WebContents. This observer will be responsible
225 // for destroying the guest WebContents if the owner goes away. 225 // for destroying the guest WebContents if the owner goes away.
226 owner_contents_observer_.reset( 226 owner_contents_observer_.reset(
227 new OwnerContentsObserver(this, owner_web_contents_)); 227 new OwnerContentsObserver(this, owner_web_contents_));
228 228
229 WebContentsObserver::Observe(guest_web_contents); 229 WebContentsObserver::Observe(guest_web_contents);
230 guest_web_contents->SetDelegate(this); 230 guest_web_contents->SetDelegate(this);
231 webcontents_guestview_map.Get().insert( 231 webcontents_guestview_map.Get().insert(
232 std::make_pair(guest_web_contents, this)); 232 std::make_pair(guest_web_contents, this));
233 GuestViewManager::FromBrowserContext(browser_context_)-> 233 GuestViewManager::FromBrowserContext(browser_context_)->
234 AddGuest(guest_instance_id_, guest_web_contents); 234 AddGuest(guest_instance_id_, guest_web_contents);
235 235
236 // Populate the view instance ID if we have it on creation. 236 // Populate the view instance ID if we have it on creation.
237 create_params.GetInteger(kParameterInstanceId, &view_instance_id_); 237 create_params.GetInteger(kParameterInstanceId, &view_instance_id_);
238 238
239 if (CanRunInDetachedState()) 239 if (CanRunInDetachedState())
240 SetUpSizing(create_params); 240 SetUpSizing(create_params);
241 241
242 // Observe guest zoom changes. 242 // Observe guest zoom changes.
243 auto zoom_controller = 243 auto zoom_controller = zoom::ZoomController::FromWebContents(web_contents());
244 ui_zoom::ZoomController::FromWebContents(web_contents());
245 zoom_controller->AddObserver(this); 244 zoom_controller->AddObserver(this);
246 245
247 // Give the derived class an opportunity to perform additional initialization. 246 // Give the derived class an opportunity to perform additional initialization.
248 DidInitialize(create_params); 247 DidInitialize(create_params);
249 } 248 }
250 249
251 void GuestViewBase::LoadURLWithParams( 250 void GuestViewBase::LoadURLWithParams(
252 const content::NavigationController::LoadURLParams& load_params) { 251 const content::NavigationController::LoadURLParams& load_params) {
253 int guest_proxy_routing_id = host()->LoadURLWithParams(load_params); 252 int guest_proxy_routing_id = host()->LoadURLWithParams(load_params);
254 DCHECK(guest_proxy_routing_id_ == MSG_ROUTING_NONE || 253 DCHECK(guest_proxy_routing_id_ == MSG_ROUTING_NONE ||
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 bool motion, 616 bool motion,
618 bool exited) { 617 bool exited) {
619 if (!attached() || !embedder_web_contents()->GetDelegate()) 618 if (!attached() || !embedder_web_contents()->GetDelegate())
620 return; 619 return;
621 620
622 embedder_web_contents()->GetDelegate()->ContentsMouseEvent( 621 embedder_web_contents()->GetDelegate()->ContentsMouseEvent(
623 embedder_web_contents(), location, motion, exited); 622 embedder_web_contents(), location, motion, exited);
624 } 623 }
625 624
626 void GuestViewBase::ContentsZoomChange(bool zoom_in) { 625 void GuestViewBase::ContentsZoomChange(bool zoom_in) {
627 ui_zoom::PageZoom::Zoom( 626 zoom::PageZoom::Zoom(embedder_web_contents(), zoom_in
628 embedder_web_contents(), 627 ? content::PAGE_ZOOM_IN
629 zoom_in ? content::PAGE_ZOOM_IN : content::PAGE_ZOOM_OUT); 628 : content::PAGE_ZOOM_OUT);
630 } 629 }
631 630
632 void GuestViewBase::HandleKeyboardEvent( 631 void GuestViewBase::HandleKeyboardEvent(
633 WebContents* source, 632 WebContents* source,
634 const content::NativeWebKeyboardEvent& event) { 633 const content::NativeWebKeyboardEvent& event) {
635 if (!attached()) 634 if (!attached())
636 return; 635 return;
637 636
638 // Send the keyboard events back to the embedder to reprocess them. 637 // Send the keyboard events back to the embedder to reprocess them.
639 embedder_web_contents()->GetDelegate()-> 638 embedder_web_contents()->GetDelegate()->
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 embedder_web_contents()->GetDelegate()->FindReply(embedder_web_contents(), 718 embedder_web_contents()->GetDelegate()->FindReply(embedder_web_contents(),
720 request_id, 719 request_id,
721 number_of_matches, 720 number_of_matches,
722 selection_rect, 721 selection_rect,
723 active_match_ordinal, 722 active_match_ordinal,
724 final_update); 723 final_update);
725 } 724 }
726 } 725 }
727 726
728 void GuestViewBase::OnZoomChanged( 727 void GuestViewBase::OnZoomChanged(
729 const ui_zoom::ZoomController::ZoomChangedEventData& data) { 728 const zoom::ZoomController::ZoomChangedEventData& data) {
730 if (data.web_contents == embedder_web_contents()) { 729 if (data.web_contents == embedder_web_contents()) {
731 // The embedder's zoom level has changed. 730 // The embedder's zoom level has changed.
732 auto guest_zoom_controller = 731 auto guest_zoom_controller =
733 ui_zoom::ZoomController::FromWebContents(web_contents()); 732 zoom::ZoomController::FromWebContents(web_contents());
734 if (content::ZoomValuesEqual(data.new_zoom_level, 733 if (content::ZoomValuesEqual(data.new_zoom_level,
735 guest_zoom_controller->GetZoomLevel())) { 734 guest_zoom_controller->GetZoomLevel())) {
736 return; 735 return;
737 } 736 }
738 // When the embedder's zoom level doesn't match the guest's, then update the 737 // When the embedder's zoom level doesn't match the guest's, then update the
739 // guest's zoom level to match. 738 // guest's zoom level to match.
740 guest_zoom_controller->SetZoomLevel(data.new_zoom_level); 739 guest_zoom_controller->SetZoomLevel(data.new_zoom_level);
741 return; 740 return;
742 } 741 }
743 742
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 } 785 }
787 InitWithWebContents(*create_params, guest_web_contents); 786 InitWithWebContents(*create_params, guest_web_contents);
788 callback.Run(guest_web_contents); 787 callback.Run(guest_web_contents);
789 } 788 }
790 789
791 double GuestViewBase::GetEmbedderZoomFactor() const { 790 double GuestViewBase::GetEmbedderZoomFactor() const {
792 if (!embedder_web_contents()) 791 if (!embedder_web_contents())
793 return 1.0; 792 return 1.0;
794 793
795 return content::ZoomLevelToZoomFactor( 794 return content::ZoomLevelToZoomFactor(
796 ui_zoom::ZoomController::GetZoomLevelForWebContents( 795 zoom::ZoomController::GetZoomLevelForWebContents(
797 embedder_web_contents())); 796 embedder_web_contents()));
798 } 797 }
799 798
800 void GuestViewBase::SetUpSizing(const base::DictionaryValue& params) { 799 void GuestViewBase::SetUpSizing(const base::DictionaryValue& params) {
801 // Read the autosize parameters passed in from the embedder. 800 // Read the autosize parameters passed in from the embedder.
802 bool auto_size_enabled = auto_size_enabled_; 801 bool auto_size_enabled = auto_size_enabled_;
803 params.GetBoolean(kAttributeAutoSize, &auto_size_enabled); 802 params.GetBoolean(kAttributeAutoSize, &auto_size_enabled);
804 803
805 int max_height = max_auto_size_.height(); 804 int max_height = max_auto_size_.height();
806 int max_width = max_auto_size_.width(); 805 int max_width = max_auto_size_.width();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 set_size_params.max_size.reset(new gfx::Size(max_width, max_height)); 839 set_size_params.max_size.reset(new gfx::Size(max_width, max_height));
841 set_size_params.normal_size.reset(new gfx::Size(normal_width, normal_height)); 840 set_size_params.normal_size.reset(new gfx::Size(normal_width, normal_height));
842 841
843 // Call SetSize to apply all the appropriate validation and clipping of 842 // Call SetSize to apply all the appropriate validation and clipping of
844 // values. 843 // values.
845 SetSize(set_size_params); 844 SetSize(set_size_params);
846 } 845 }
847 846
848 void GuestViewBase::SetGuestZoomLevelToMatchEmbedder() { 847 void GuestViewBase::SetGuestZoomLevelToMatchEmbedder() {
849 auto embedder_zoom_controller = 848 auto embedder_zoom_controller =
850 ui_zoom::ZoomController::FromWebContents(owner_web_contents()); 849 zoom::ZoomController::FromWebContents(owner_web_contents());
851 if (!embedder_zoom_controller) 850 if (!embedder_zoom_controller)
852 return; 851 return;
853 852
854 ui_zoom::ZoomController::FromWebContents(web_contents()) 853 zoom::ZoomController::FromWebContents(web_contents())
855 ->SetZoomLevel(embedder_zoom_controller->GetZoomLevel()); 854 ->SetZoomLevel(embedder_zoom_controller->GetZoomLevel());
856 } 855 }
857 856
858 void GuestViewBase::StartTrackingEmbedderZoomLevel() { 857 void GuestViewBase::StartTrackingEmbedderZoomLevel() {
859 if (!ZoomPropagatesFromEmbedderToGuest()) 858 if (!ZoomPropagatesFromEmbedderToGuest())
860 return; 859 return;
861 860
862 auto embedder_zoom_controller = 861 auto embedder_zoom_controller =
863 ui_zoom::ZoomController::FromWebContents(owner_web_contents()); 862 zoom::ZoomController::FromWebContents(owner_web_contents());
864 // Chrome Apps do not have a ZoomController. 863 // Chrome Apps do not have a ZoomController.
865 if (!embedder_zoom_controller) 864 if (!embedder_zoom_controller)
866 return; 865 return;
867 // Listen to the embedder's zoom changes. 866 // Listen to the embedder's zoom changes.
868 embedder_zoom_controller->AddObserver(this); 867 embedder_zoom_controller->AddObserver(this);
869 868
870 // Set the guest's initial zoom level to be equal to the embedder's. 869 // Set the guest's initial zoom level to be equal to the embedder's.
871 SetGuestZoomLevelToMatchEmbedder(); 870 SetGuestZoomLevelToMatchEmbedder();
872 } 871 }
873 872
874 void GuestViewBase::StopTrackingEmbedderZoomLevel() { 873 void GuestViewBase::StopTrackingEmbedderZoomLevel() {
875 if (!attached() || !ZoomPropagatesFromEmbedderToGuest()) 874 if (!attached() || !ZoomPropagatesFromEmbedderToGuest())
876 return; 875 return;
877 876
878 auto embedder_zoom_controller = 877 auto embedder_zoom_controller =
879 ui_zoom::ZoomController::FromWebContents(owner_web_contents()); 878 zoom::ZoomController::FromWebContents(owner_web_contents());
880 // Chrome Apps do not have a ZoomController. 879 // Chrome Apps do not have a ZoomController.
881 if (!embedder_zoom_controller) 880 if (!embedder_zoom_controller)
882 return; 881 return;
883 embedder_zoom_controller->RemoveObserver(this); 882 embedder_zoom_controller->RemoveObserver(this);
884 } 883 }
885 884
886 void GuestViewBase::UpdateGuestSize(const gfx::Size& new_size, 885 void GuestViewBase::UpdateGuestSize(const gfx::Size& new_size,
887 bool due_to_auto_resize) { 886 bool due_to_auto_resize) {
888 if (due_to_auto_resize) 887 if (due_to_auto_resize)
889 GuestSizeChangedDueToAutoSize(guest_size_, new_size); 888 GuestSizeChangedDueToAutoSize(guest_size_, new_size);
890 DispatchOnResizeEvent(guest_size_, new_size); 889 DispatchOnResizeEvent(guest_size_, new_size);
891 guest_size_ = new_size; 890 guest_size_ = new_size;
892 } 891 }
893 892
894 } // namespace guest_view 893 } // namespace guest_view
OLDNEW
« no previous file with comments | « components/guest_view/browser/guest_view_base.h ('k') | components/ui/zoom/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698