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 #ifndef CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ |
6 #define CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ | 6 #define CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <functional> | 10 #include <functional> |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 #include "ui/gfx/geometry/rect_f.h" | 49 #include "ui/gfx/geometry/rect_f.h" |
50 #include "ui/gfx/geometry/size.h" | 50 #include "ui/gfx/geometry/size.h" |
51 | 51 |
52 struct ViewHostMsg_DateTimeDialogValue_Params; | 52 struct ViewHostMsg_DateTimeDialogValue_Params; |
53 | 53 |
54 namespace content { | 54 namespace content { |
55 class BrowserPluginEmbedder; | 55 class BrowserPluginEmbedder; |
56 class BrowserPluginGuest; | 56 class BrowserPluginGuest; |
57 class DateTimeChooserAndroid; | 57 class DateTimeChooserAndroid; |
58 class DownloadItem; | 58 class DownloadItem; |
| 59 class FindRequestManager; |
59 class GeolocationServiceContext; | 60 class GeolocationServiceContext; |
60 class InterstitialPageImpl; | 61 class InterstitialPageImpl; |
61 class JavaScriptDialogManager; | 62 class JavaScriptDialogManager; |
62 class LoaderIOThreadNotifier; | 63 class LoaderIOThreadNotifier; |
63 class ManifestManagerHost; | 64 class ManifestManagerHost; |
64 class MediaWebContentsObserver; | 65 class MediaWebContentsObserver; |
65 class PluginContentOriginWhitelist; | 66 class PluginContentOriginWhitelist; |
66 class PowerSaveBlocker; | 67 class PowerSaveBlocker; |
67 class RenderViewHost; | 68 class RenderViewHost; |
68 class RenderViewHostDelegateView; | 69 class RenderViewHostDelegateView; |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 void ExitFullscreen(bool will_cause_resize) override; | 379 void ExitFullscreen(bool will_cause_resize) override; |
379 void ResumeLoadingCreatedWebContents() override; | 380 void ResumeLoadingCreatedWebContents() override; |
380 void OnMediaSessionStateChanged(); | 381 void OnMediaSessionStateChanged(); |
381 void ResumeMediaSession() override; | 382 void ResumeMediaSession() override; |
382 void SuspendMediaSession() override; | 383 void SuspendMediaSession() override; |
383 void StopMediaSession() override; | 384 void StopMediaSession() override; |
384 | 385 |
385 #if defined(OS_ANDROID) | 386 #if defined(OS_ANDROID) |
386 base::android::ScopedJavaLocalRef<jobject> GetJavaWebContents() override; | 387 base::android::ScopedJavaLocalRef<jobject> GetJavaWebContents() override; |
387 virtual WebContentsAndroid* GetWebContentsAndroid(); | 388 virtual WebContentsAndroid* GetWebContentsAndroid(); |
| 389 void ActivateNearestFindResult(float x, float y) override; |
| 390 void RequestFindMatchRects(int current_version) override; |
388 #elif defined(OS_MACOSX) | 391 #elif defined(OS_MACOSX) |
389 void SetAllowOtherViews(bool allow) override; | 392 void SetAllowOtherViews(bool allow) override; |
390 bool GetAllowOtherViews() override; | 393 bool GetAllowOtherViews() override; |
391 #endif | 394 #endif |
392 | 395 |
393 // Implementation of PageNavigator. | 396 // Implementation of PageNavigator. |
394 WebContents* OpenURL(const OpenURLParams& params) override; | 397 WebContents* OpenURL(const OpenURLParams& params) override; |
395 | 398 |
396 // Implementation of IPC::Sender. | 399 // Implementation of IPC::Sender. |
397 bool Send(IPC::Message* message) override; | 400 bool Send(IPC::Message* message) override; |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 void MediaStartedPlaying(const WebContentsObserver::MediaPlayerId& id); | 725 void MediaStartedPlaying(const WebContentsObserver::MediaPlayerId& id); |
723 void MediaStoppedPlaying(const WebContentsObserver::MediaPlayerId& id); | 726 void MediaStoppedPlaying(const WebContentsObserver::MediaPlayerId& id); |
724 | 727 |
725 MediaWebContentsObserver* media_web_contents_observer() { | 728 MediaWebContentsObserver* media_web_contents_observer() { |
726 return media_web_contents_observer_.get(); | 729 return media_web_contents_observer_.get(); |
727 } | 730 } |
728 | 731 |
729 // Update the web contents visibility. | 732 // Update the web contents visibility. |
730 void UpdateWebContentsVisibility(bool visible); | 733 void UpdateWebContentsVisibility(bool visible); |
731 | 734 |
732 private: | 735 // Called by FindRequestManager when find replies come in from a renderer |
| 736 // process. |
| 737 void NotifyFindReply(int request_id, |
| 738 int number_of_matches, |
| 739 const gfx::Rect& selection_rect, |
| 740 int active_match_ordinal, |
| 741 bool final_update); |
| 742 |
| 743 #if defined(OS_ANDROID) |
| 744 // Called by FindRequestManager when all of the find match rects are in. |
| 745 void NotifyFindMatchRectsReply(int version, |
| 746 const std::vector<gfx::RectF>& rects, |
| 747 const gfx::RectF& active_rect); |
| 748 #endif |
| 749 |
| 750 private: |
733 friend class WebContentsObserver; | 751 friend class WebContentsObserver; |
734 friend class WebContents; // To implement factory methods. | 752 friend class WebContents; // To implement factory methods. |
735 | 753 |
736 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, NoJSMessageOnInterstitials); | 754 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, NoJSMessageOnInterstitials); |
737 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, UpdateTitle); | 755 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, UpdateTitle); |
738 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FindOpenerRVHWhenPending); | 756 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FindOpenerRVHWhenPending); |
739 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, | 757 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, |
740 CrossSiteCantPreemptAfterUnload); | 758 CrossSiteCantPreemptAfterUnload); |
741 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, PendingContents); | 759 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, PendingContents); |
742 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FrameTreeShape); | 760 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FrameTreeShape); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 | 800 |
783 void ConnectToOuterWebContents(WebContentsImpl* outer_web_contents, | 801 void ConnectToOuterWebContents(WebContentsImpl* outer_web_contents, |
784 RenderFrameHostImpl* outer_contents_frame); | 802 RenderFrameHostImpl* outer_contents_frame); |
785 | 803 |
786 WebContentsImpl* outer_web_contents() { return outer_web_contents_; } | 804 WebContentsImpl* outer_web_contents() { return outer_web_contents_; } |
787 int outer_contents_frame_tree_node_id() { | 805 int outer_contents_frame_tree_node_id() { |
788 return outer_contents_frame_tree_node_id_; | 806 return outer_contents_frame_tree_node_id_; |
789 } | 807 } |
790 | 808 |
791 private: | 809 private: |
792 // The outer Webontents. | 810 // The outer WebContents. |
793 WebContentsImpl* outer_web_contents_; | 811 WebContentsImpl* outer_web_contents_; |
794 // The ID of the FrameTreeNode in outer WebContents that is hosting us. | 812 // The ID of the FrameTreeNode in outer WebContents that is hosting us. |
795 int outer_contents_frame_tree_node_id_; | 813 int outer_contents_frame_tree_node_id_; |
796 // List of inner WebContents that we host. | 814 // List of inner WebContents that we host. |
797 ChildrenSet inner_web_contents_tree_nodes_; | 815 ChildrenSet inner_web_contents_tree_nodes_; |
798 }; | 816 }; |
799 | 817 |
800 // See WebContents::Create for a description of these parameters. | 818 // See WebContents::Create for a description of these parameters. |
801 WebContentsImpl(BrowserContext* browser_context); | 819 WebContentsImpl(BrowserContext* browser_context); |
802 | 820 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 bool user_gesture); | 898 bool user_gesture); |
881 void OnFindReply(int request_id, | 899 void OnFindReply(int request_id, |
882 int number_of_matches, | 900 int number_of_matches, |
883 const gfx::Rect& selection_rect, | 901 const gfx::Rect& selection_rect, |
884 int active_match_ordinal, | 902 int active_match_ordinal, |
885 bool final_update); | 903 bool final_update); |
886 #if defined(OS_ANDROID) | 904 #if defined(OS_ANDROID) |
887 void OnFindMatchRectsReply(int version, | 905 void OnFindMatchRectsReply(int version, |
888 const std::vector<gfx::RectF>& rects, | 906 const std::vector<gfx::RectF>& rects, |
889 const gfx::RectF& active_rect); | 907 const gfx::RectF& active_rect); |
890 | 908 void OnGetNearestFindResultReply(int request_id, float distance); |
891 void OnOpenDateTimeDialog( | 909 void OnOpenDateTimeDialog( |
892 const ViewHostMsg_DateTimeDialogValue_Params& value); | 910 const ViewHostMsg_DateTimeDialogValue_Params& value); |
893 #endif | 911 #endif |
894 void OnDomOperationResponse(const std::string& json_string); | 912 void OnDomOperationResponse(const std::string& json_string); |
895 void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy); | 913 void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy); |
896 void OnOpenColorChooser(int color_chooser_id, | 914 void OnOpenColorChooser(int color_chooser_id, |
897 SkColor color, | 915 SkColor color, |
898 const std::vector<ColorSuggestion>& suggestions); | 916 const std::vector<ColorSuggestion>& suggestions); |
899 void OnEndColorChooser(int color_chooser_id); | 917 void OnEndColorChooser(int color_chooser_id); |
900 void OnSetSelectedColorInColorChooser(int color_chooser_id, SkColor color); | 918 void OnSetSelectedColorInColorChooser(int color_chooser_id, SkColor color); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1034 | 1052 |
1035 // Internal helper to create WebUI objects associated with |this|. |url| is | 1053 // Internal helper to create WebUI objects associated with |this|. |url| is |
1036 // used to determine which WebUI should be created (if any). |frame_name| | 1054 // used to determine which WebUI should be created (if any). |frame_name| |
1037 // corresponds to the name of a frame that the WebUI should be created for (or | 1055 // corresponds to the name of a frame that the WebUI should be created for (or |
1038 // the main frame if empty). | 1056 // the main frame if empty). |
1039 WebUI* CreateWebUI(const GURL& url, const std::string& frame_name); | 1057 WebUI* CreateWebUI(const GURL& url, const std::string& frame_name); |
1040 | 1058 |
1041 void SetJavaScriptDialogManagerForTesting( | 1059 void SetJavaScriptDialogManagerForTesting( |
1042 JavaScriptDialogManager* dialog_manager); | 1060 JavaScriptDialogManager* dialog_manager); |
1043 | 1061 |
| 1062 // Returns the FindRequestManager, or creates one if it doesn't already exist. |
| 1063 FindRequestManager* GetOrCreateFindRequestManager(); |
| 1064 |
1044 // Data for core operation --------------------------------------------------- | 1065 // Data for core operation --------------------------------------------------- |
1045 | 1066 |
1046 // Delegate for notifying our owner about stuff. Not owned by us. | 1067 // Delegate for notifying our owner about stuff. Not owned by us. |
1047 WebContentsDelegate* delegate_; | 1068 WebContentsDelegate* delegate_; |
1048 | 1069 |
1049 // Handles the back/forward list and loading. | 1070 // Handles the back/forward list and loading. |
1050 NavigationControllerImpl controller_; | 1071 NavigationControllerImpl controller_; |
1051 | 1072 |
1052 // The corresponding view. | 1073 // The corresponding view. |
1053 std::unique_ptr<WebContentsView> view_; | 1074 std::unique_ptr<WebContentsView> view_; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1085 // Manages the frame tree of the page and process swaps in each node. | 1106 // Manages the frame tree of the page and process swaps in each node. |
1086 FrameTree frame_tree_; | 1107 FrameTree frame_tree_; |
1087 | 1108 |
1088 // If this WebContents is part of a "tree of WebContents", then this contains | 1109 // If this WebContents is part of a "tree of WebContents", then this contains |
1089 // information about the structure. | 1110 // information about the structure. |
1090 std::unique_ptr<WebContentsTreeNode> node_; | 1111 std::unique_ptr<WebContentsTreeNode> node_; |
1091 | 1112 |
1092 // SavePackage, lazily created. | 1113 // SavePackage, lazily created. |
1093 scoped_refptr<SavePackage> save_package_; | 1114 scoped_refptr<SavePackage> save_package_; |
1094 | 1115 |
| 1116 // Manages/coordinates find-in-page requests. Created lazily. |
| 1117 scoped_ptr<FindRequestManager> find_request_manager_; |
| 1118 |
1095 // Data for loading state ---------------------------------------------------- | 1119 // Data for loading state ---------------------------------------------------- |
1096 | 1120 |
1097 // Indicates whether the current load is to a different document. Only valid | 1121 // Indicates whether the current load is to a different document. Only valid |
1098 // if is_loading_ is true. | 1122 // if is_loading_ is true. |
1099 bool is_load_to_different_document_; | 1123 bool is_load_to_different_document_; |
1100 | 1124 |
1101 // Indicates if the tab is considered crashed. | 1125 // Indicates if the tab is considered crashed. |
1102 base::TerminationStatus crashed_status_; | 1126 base::TerminationStatus crashed_status_; |
1103 int crashed_error_code_; | 1127 int crashed_error_code_; |
1104 | 1128 |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1361 // Adds/removes a callback called on creation of each new WebContents. | 1385 // Adds/removes a callback called on creation of each new WebContents. |
1362 static void AddCreatedCallbackForTesting(const CreatedCallback& callback); | 1386 static void AddCreatedCallbackForTesting(const CreatedCallback& callback); |
1363 static void RemoveCreatedCallbackForTesting(const CreatedCallback& callback); | 1387 static void RemoveCreatedCallbackForTesting(const CreatedCallback& callback); |
1364 | 1388 |
1365 DISALLOW_COPY_AND_ASSIGN(FriendZone); | 1389 DISALLOW_COPY_AND_ASSIGN(FriendZone); |
1366 }; | 1390 }; |
1367 | 1391 |
1368 } // namespace content | 1392 } // namespace content |
1369 | 1393 |
1370 #endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ | 1394 #endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ |
OLD | NEW |