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_RENDERER_RENDER_VIEW_IMPL_H_ | 5 #ifndef CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ |
6 #define CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ | 6 #define CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 static RenderViewImpl* FromWebView(blink::WebView* webview); | 177 static RenderViewImpl* FromWebView(blink::WebView* webview); |
178 | 178 |
179 // Returns the RenderViewImpl for the given routing ID. | 179 // Returns the RenderViewImpl for the given routing ID. |
180 static RenderViewImpl* FromRoutingID(int routing_id); | 180 static RenderViewImpl* FromRoutingID(int routing_id); |
181 | 181 |
182 static size_t GetRenderViewCount(); | 182 static size_t GetRenderViewCount(); |
183 | 183 |
184 // May return NULL when the view is closing. | 184 // May return NULL when the view is closing. |
185 blink::WebView* webview() const; | 185 blink::WebView* webview() const; |
186 | 186 |
187 int history_list_offset() const { return history_list_offset_; } | |
188 | |
189 const WebPreferences& webkit_preferences() const { | 187 const WebPreferences& webkit_preferences() const { |
190 return webkit_preferences_; | 188 return webkit_preferences_; |
191 } | 189 } |
192 | 190 |
193 const RendererPreferences& renderer_preferences() const { | 191 const RendererPreferences& renderer_preferences() const { |
194 return renderer_preferences_; | 192 return renderer_preferences_; |
195 } | 193 } |
196 | 194 |
197 void set_send_content_state_immediately(bool value) { | 195 void set_send_content_state_immediately(bool value) { |
198 send_content_state_immediately_ = value; | 196 send_content_state_immediately_ = value; |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate | 540 // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate |
543 // utility functions needed in both classes, while we move frame specific | 541 // utility functions needed in both classes, while we move frame specific |
544 // code away from this class. | 542 // code away from this class. |
545 friend class RenderFrameImpl; | 543 friend class RenderFrameImpl; |
546 | 544 |
547 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI); | 545 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI); |
548 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | 546 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
549 DidFailProvisionalLoadWithErrorForError); | 547 DidFailProvisionalLoadWithErrorForError); |
550 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | 548 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
551 DidFailProvisionalLoadWithErrorForCancellation); | 549 DidFailProvisionalLoadWithErrorForCancellation); |
552 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | |
553 DontIgnoreBackAfterNavEntryLimit); | |
554 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition); | 550 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition); |
555 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters); | 551 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters); |
556 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad); | 552 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad); |
557 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, LastCommittedUpdateState); | 553 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, LastCommittedUpdateState); |
558 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnHandleKeyboardEvent); | 554 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnHandleKeyboardEvent); |
559 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnImeTypeChanged); | 555 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnImeTypeChanged); |
560 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavStateChanged); | 556 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavStateChanged); |
561 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetTextDirection); | 557 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetTextDirection); |
562 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnUpdateWebPreferences); | 558 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnUpdateWebPreferences); |
563 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | 559 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
564 SetEditableSelectionAndComposition); | 560 SetEditableSelectionAndComposition); |
565 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, StaleNavigationsIgnored); | 561 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, StaleNavigationsIgnored); |
| 562 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
| 563 DontIgnoreBackAfterNavEntryLimit); |
566 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, UpdateTargetURLWithInvalidURL); | 564 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, UpdateTargetURLWithInvalidURL); |
567 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | 565 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
568 GetCompositionCharacterBoundsTest); | 566 GetCompositionCharacterBoundsTest); |
569 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavigationHttpPost); | 567 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavigationHttpPost); |
570 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | 568 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
571 DecideNavigationPolicyHandlesAllTopLevel); | 569 DecideNavigationPolicyHandlesAllTopLevel); |
572 #if defined(OS_MACOSX) | 570 #if defined(OS_MACOSX) |
573 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp); | 571 FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp); |
574 #endif | 572 #endif |
575 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndPrune); | 573 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndOffset); |
576 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit); | 574 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit); |
577 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame); | 575 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame); |
578 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame); | 576 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame); |
579 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper); | 577 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper); |
580 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, | 578 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, |
581 MessageOrderInDidChangeSelection); | 579 MessageOrderInDidChangeSelection); |
582 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendCandidateWindowEvents); | 580 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendCandidateWindowEvents); |
583 FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, Suppresses); | 581 FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, Suppresses); |
584 FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, DoesNotSuppress); | 582 FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, DoesNotSuppress); |
585 | 583 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 const blink::WebMediaPlayerAction& action); | 674 const blink::WebMediaPlayerAction& action); |
677 void OnPluginActionAt(const gfx::Point& location, | 675 void OnPluginActionAt(const gfx::Point& location, |
678 const blink::WebPluginAction& action); | 676 const blink::WebPluginAction& action); |
679 void OnMoveOrResizeStarted(); | 677 void OnMoveOrResizeStarted(); |
680 void OnPostMessageEvent(const ViewMsg_PostMessage_Params& params); | 678 void OnPostMessageEvent(const ViewMsg_PostMessage_Params& params); |
681 void OnReleaseDisambiguationPopupBitmap(const cc::SharedBitmapId& id); | 679 void OnReleaseDisambiguationPopupBitmap(const cc::SharedBitmapId& id); |
682 void OnResetPageEncodingToDefault(); | 680 void OnResetPageEncodingToDefault(); |
683 void OnSetActive(bool active); | 681 void OnSetActive(bool active); |
684 void OnSetBackgroundOpaque(bool opaque); | 682 void OnSetBackgroundOpaque(bool opaque); |
685 void OnExitFullscreen(); | 683 void OnExitFullscreen(); |
686 void OnSetHistoryLengthAndPrune(int history_length, int32 minimum_page_id); | 684 void OnSetHistoryOffsetAndLength(int history_offset, int history_length); |
687 void OnSetInitialFocus(bool reverse); | 685 void OnSetInitialFocus(bool reverse); |
688 void OnSetPageEncoding(const std::string& encoding_name); | 686 void OnSetPageEncoding(const std::string& encoding_name); |
689 void OnSetRendererPrefs(const RendererPreferences& renderer_prefs); | 687 void OnSetRendererPrefs(const RendererPreferences& renderer_prefs); |
690 void OnSetWebUIProperty(const std::string& name, const std::string& value); | 688 void OnSetWebUIProperty(const std::string& name, const std::string& value); |
691 void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level); | 689 void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level); |
692 void OnSetZoomLevelForView(bool uses_temporary_zoom_level, double level); | 690 void OnSetZoomLevelForView(bool uses_temporary_zoom_level, double level); |
693 void OnStopFinding(StopFindAction action); | 691 void OnStopFinding(StopFindAction action); |
694 void OnSuppressDialogsUntilSwapOut(); | 692 void OnSuppressDialogsUntilSwapOut(); |
695 void OnThemeChanged(); | 693 void OnThemeChanged(); |
696 void OnUpdateTargetURLAck(); | 694 void OnUpdateTargetURLAck(); |
(...skipping 26 matching lines...) Expand all Loading... |
723 // and put it in the same position in the .cc file. | 721 // and put it in the same position in the .cc file. |
724 | 722 |
725 // Misc private functions ---------------------------------------------------- | 723 // Misc private functions ---------------------------------------------------- |
726 // Check whether the preferred size has changed. | 724 // Check whether the preferred size has changed. |
727 void CheckPreferredSize(); | 725 void CheckPreferredSize(); |
728 | 726 |
729 // Called to get the WebPlugin to handle find requests in the document. | 727 // Called to get the WebPlugin to handle find requests in the document. |
730 // Returns NULL if there is no such WebPlugin. | 728 // Returns NULL if there is no such WebPlugin. |
731 blink::WebPlugin* GetWebPluginForFind(); | 729 blink::WebPlugin* GetWebPluginForFind(); |
732 | 730 |
733 // Returns true if the |params| navigation is to an entry that has been | |
734 // cropped due to a recent navigation the browser did not know about. | |
735 bool IsBackForwardToStaleEntry(const PageState& state, | |
736 int pending_history_list_offset, | |
737 int32 page_id, | |
738 bool is_reload); | |
739 | 731 |
740 // If we initiated a navigation, this function will populate |document_state| | 732 // If we initiated a navigation, this function will populate |document_state| |
741 // with the navigation information saved in OnNavigate(). | 733 // with the navigation information saved in OnNavigate(). |
742 void PopulateDocumentStateFromPending(DocumentState* document_state); | 734 void PopulateDocumentStateFromPending(DocumentState* document_state); |
743 | 735 |
744 // Returns a new NavigationState populated with the navigation information | 736 // Returns a new NavigationState populated with the navigation information |
745 // saved in OnNavigate(). | 737 // saved in OnNavigate(). |
746 NavigationState* CreateNavigationStateFromPending(); | 738 NavigationState* CreateNavigationStateFromPending(); |
747 | 739 |
748 // Processes the command-line flags --enable-viewport, | 740 // Processes the command-line flags --enable-viewport, |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
895 // navigations, the history may have some entries that were committed in other | 887 // navigations, the history may have some entries that were committed in other |
896 // processes. We won't know about them until the next navigation in this | 888 // processes. We won't know about them until the next navigation in this |
897 // process. | 889 // process. |
898 int history_list_length_; | 890 int history_list_length_; |
899 | 891 |
900 // Counter to track how many frames have sent start notifications but not stop | 892 // Counter to track how many frames have sent start notifications but not stop |
901 // notifications. TODO(avi): Remove this once DidStartLoading/DidStopLoading | 893 // notifications. TODO(avi): Remove this once DidStartLoading/DidStopLoading |
902 // are gone. | 894 // are gone. |
903 int frames_in_progress_; | 895 int frames_in_progress_; |
904 | 896 |
905 // The list of page IDs for each history item this RenderView knows about. | |
906 // Some entries may be -1 if they were rendered by other processes or were | |
907 // restored from a previous session. This lets us detect attempts to | |
908 // navigate to stale entries that have been cropped from our history. | |
909 std::vector<int32> history_page_ids_; | |
910 | |
911 // UI state ------------------------------------------------------------------ | 897 // UI state ------------------------------------------------------------------ |
912 | 898 |
913 // The state of our target_url transmissions. When we receive a request to | 899 // The state of our target_url transmissions. When we receive a request to |
914 // send a URL to the browser, we set this to TARGET_INFLIGHT until an ACK | 900 // send a URL to the browser, we set this to TARGET_INFLIGHT until an ACK |
915 // comes back - if a new request comes in before the ACK, we store the new | 901 // comes back - if a new request comes in before the ACK, we store the new |
916 // URL in pending_target_url_ and set the status to TARGET_PENDING. If an | 902 // URL in pending_target_url_ and set the status to TARGET_PENDING. If an |
917 // ACK comes back and we are in TARGET_PENDING, we send the stored URL and | 903 // ACK comes back and we are in TARGET_PENDING, we send the stored URL and |
918 // revert to TARGET_INFLIGHT. | 904 // revert to TARGET_INFLIGHT. |
919 // | 905 // |
920 // We don't need a queue of URLs to send, as only the latest is useful. | 906 // We don't need a queue of URLs to send, as only the latest is useful. |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1087 // use the Observer interface to filter IPC messages and receive frame change | 1073 // use the Observer interface to filter IPC messages and receive frame change |
1088 // notifications. | 1074 // notifications. |
1089 // --------------------------------------------------------------------------- | 1075 // --------------------------------------------------------------------------- |
1090 | 1076 |
1091 DISALLOW_COPY_AND_ASSIGN(RenderViewImpl); | 1077 DISALLOW_COPY_AND_ASSIGN(RenderViewImpl); |
1092 }; | 1078 }; |
1093 | 1079 |
1094 } // namespace content | 1080 } // namespace content |
1095 | 1081 |
1096 #endif // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ | 1082 #endif // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ |
OLD | NEW |