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

Side by Side Diff: content/browser/web_contents/web_contents_impl.h

Issue 1986643002: Track pending WebContents and widgets by (process_id, routing_id) pair. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fullscreen-flash
Patch Set: Disable popup menu test for Mac/Android Created 4 years, 7 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
OLDNEW
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 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 int32_t route_id, 505 int32_t route_id,
506 int32_t main_frame_route_id, 506 int32_t main_frame_route_id,
507 int32_t main_frame_widget_route_id, 507 int32_t main_frame_widget_route_id,
508 const ViewHostMsg_CreateWindow_Params& params, 508 const ViewHostMsg_CreateWindow_Params& params,
509 SessionStorageNamespace* session_storage_namespace) override; 509 SessionStorageNamespace* session_storage_namespace) override;
510 void CreateNewWidget(int32_t render_process_id, 510 void CreateNewWidget(int32_t render_process_id,
511 int32_t route_id, 511 int32_t route_id,
512 blink::WebPopupType popup_type) override; 512 blink::WebPopupType popup_type) override;
513 void CreateNewFullscreenWidget(int32_t render_process_id, 513 void CreateNewFullscreenWidget(int32_t render_process_id,
514 int32_t route_id) override; 514 int32_t route_id) override;
515 void ShowCreatedWindow(int route_id, 515 void ShowCreatedWindow(int process_id,
516 int route_id,
516 WindowOpenDisposition disposition, 517 WindowOpenDisposition disposition,
517 const gfx::Rect& initial_rect, 518 const gfx::Rect& initial_rect,
518 bool user_gesture) override; 519 bool user_gesture) override;
519 void ShowCreatedWidget(int route_id, const gfx::Rect& initial_rect) override; 520 void ShowCreatedWidget(int process_id,
520 void ShowCreatedFullscreenWidget(int route_id) override; 521 int route_id,
522 const gfx::Rect& initial_rect) override;
523 void ShowCreatedFullscreenWidget(int process_id, int route_id) override;
521 void RequestMediaAccessPermission( 524 void RequestMediaAccessPermission(
522 const MediaStreamRequest& request, 525 const MediaStreamRequest& request,
523 const MediaResponseCallback& callback) override; 526 const MediaResponseCallback& callback) override;
524 bool CheckMediaAccessPermission(const GURL& security_origin, 527 bool CheckMediaAccessPermission(const GURL& security_origin,
525 MediaStreamType type) override; 528 MediaStreamType type) override;
526 SessionStorageNamespace* GetSessionStorageNamespace( 529 SessionStorageNamespace* GetSessionStorageNamespace(
527 SiteInstance* instance) override; 530 SiteInstance* instance) override;
528 SessionStorageNamespaceMap GetSessionStorageNamespaceMap() override; 531 SessionStorageNamespaceMap GetSessionStorageNamespaceMap() override;
529 FrameTree* GetFrameTree() override; 532 FrameTree* GetFrameTree() override;
530 void SetIsVirtualKeyboardRequested(bool requested) override; 533 void SetIsVirtualKeyboardRequested(bool requested) override;
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, 775 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest,
773 LoadResourceFromMemoryCacheWithBadSecurityInfo); 776 LoadResourceFromMemoryCacheWithBadSecurityInfo);
774 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, 777 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest,
775 LoadResourceFromMemoryCacheWithEmptySecurityInfo); 778 LoadResourceFromMemoryCacheWithEmptySecurityInfo);
776 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, 779 FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest,
777 ResetJavaScriptDialogOnUserNavigate); 780 ResetJavaScriptDialogOnUserNavigate);
778 FRIEND_TEST_ALL_PREFIXES(FormStructureBrowserTest, HTMLFiles); 781 FRIEND_TEST_ALL_PREFIXES(FormStructureBrowserTest, HTMLFiles);
779 FRIEND_TEST_ALL_PREFIXES(NavigationControllerTest, HistoryNavigate); 782 FRIEND_TEST_ALL_PREFIXES(NavigationControllerTest, HistoryNavigate);
780 FRIEND_TEST_ALL_PREFIXES(RenderFrameHostManagerTest, PageDoesBackAndReload); 783 FRIEND_TEST_ALL_PREFIXES(RenderFrameHostManagerTest, PageDoesBackAndReload);
781 FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest, CrossSiteIframe); 784 FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest, CrossSiteIframe);
785 FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest,
786 TwoSubframesCreatePopupsSimultaneously);
787 FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest,
788 TwoSubframesCreatePopupMenuWidgetsSimultaneously);
782 FRIEND_TEST_ALL_PREFIXES(SitePerProcessAccessibilityBrowserTest, 789 FRIEND_TEST_ALL_PREFIXES(SitePerProcessAccessibilityBrowserTest,
783 CrossSiteIframeAccessibility); 790 CrossSiteIframeAccessibility);
784 FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest, 791 FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest,
785 JavaScriptDialogsInMainAndSubframes); 792 JavaScriptDialogsInMainAndSubframes);
786 793
787 // So |find_request_manager_| can be accessed for testing. 794 // So |find_request_manager_| can be accessed for testing.
788 friend class FindRequestManagerTest; 795 friend class FindRequestManagerTest;
789 796
790 // So InterstitialPageImpl can access SetIsLoading. 797 // So InterstitialPageImpl can access SetIsLoading.
791 friend class InterstitialPageImpl; 798 friend class InterstitialPageImpl;
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 bool UpdateTitleForEntry(NavigationEntryImpl* entry, 997 bool UpdateTitleForEntry(NavigationEntryImpl* entry,
991 const base::string16& title); 998 const base::string16& title);
992 999
993 // Helper for CreateNewWidget/CreateNewFullscreenWidget. 1000 // Helper for CreateNewWidget/CreateNewFullscreenWidget.
994 void CreateNewWidget(int32_t render_process_id, 1001 void CreateNewWidget(int32_t render_process_id,
995 int32_t route_id, 1002 int32_t route_id,
996 bool is_fullscreen, 1003 bool is_fullscreen,
997 blink::WebPopupType popup_type); 1004 blink::WebPopupType popup_type);
998 1005
999 // Helper for ShowCreatedWidget/ShowCreatedFullscreenWidget. 1006 // Helper for ShowCreatedWidget/ShowCreatedFullscreenWidget.
1000 void ShowCreatedWidget(int route_id, 1007 void ShowCreatedWidget(int process_id,
1008 int route_id,
1001 bool is_fullscreen, 1009 bool is_fullscreen,
1002 const gfx::Rect& initial_rect); 1010 const gfx::Rect& initial_rect);
1003 1011
1004 // Finds the new RenderWidgetHost and returns it. Note that this can only be 1012 // Finds the new RenderWidgetHost and returns it. Note that this can only be
1005 // called once as this call also removes it from the internal map. 1013 // called once as this call also removes it from the internal map.
1006 RenderWidgetHostView* GetCreatedWidget(int route_id); 1014 RenderWidgetHostView* GetCreatedWidget(int process_id, int route_id);
1007 1015
1008 // Finds the new WebContentsImpl by route_id, initializes it for 1016 // Finds the new WebContentsImpl by route_id, initializes it for
1009 // renderer-initiated creation, and returns it. Note that this can only be 1017 // renderer-initiated creation, and returns it. Note that this can only be
1010 // called once as this call also removes it from the internal map. 1018 // called once as this call also removes it from the internal map.
1011 WebContentsImpl* GetCreatedWindow(int route_id); 1019 WebContentsImpl* GetCreatedWindow(int process_id, int route_id);
1012 1020
1013 // Sends a Page message IPC. 1021 // Sends a Page message IPC.
1014 void SendPageMessage(IPC::Message* msg); 1022 void SendPageMessage(IPC::Message* msg);
1015 1023
1016 // Tracking loading progress ------------------------------------------------- 1024 // Tracking loading progress -------------------------------------------------
1017 1025
1018 // Resets the tracking state of the current load progress. 1026 // Resets the tracking state of the current load progress.
1019 void ResetLoadProgressState(); 1027 void ResetLoadProgressState();
1020 1028
1021 // Notifies the delegate that the load progress was updated. 1029 // Notifies the delegate that the load progress was updated.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 1092
1085 // The corresponding view. 1093 // The corresponding view.
1086 std::unique_ptr<WebContentsView> view_; 1094 std::unique_ptr<WebContentsView> view_;
1087 1095
1088 // The view of the RVHD. Usually this is our WebContentsView implementation, 1096 // The view of the RVHD. Usually this is our WebContentsView implementation,
1089 // but if an embedder uses a different WebContentsView, they'll need to 1097 // but if an embedder uses a different WebContentsView, they'll need to
1090 // provide this. 1098 // provide this.
1091 RenderViewHostDelegateView* render_view_host_delegate_view_; 1099 RenderViewHostDelegateView* render_view_host_delegate_view_;
1092 1100
1093 // Tracks created WebContentsImpl objects that have not been shown yet. They 1101 // Tracks created WebContentsImpl objects that have not been shown yet. They
1094 // are identified by the route ID passed to CreateNewWindow. 1102 // are identified by the process ID and routing ID passed to CreateNewWindow.
1095 typedef std::map<int, WebContentsImpl*> PendingContents; 1103 typedef std::pair<int, int> ProcessRoutingIdPair;
1096 PendingContents pending_contents_; 1104 std::map<ProcessRoutingIdPair, WebContentsImpl*> pending_contents_;
1097 1105
1098 // These maps hold on to the widgets that we created on behalf of the renderer 1106 // This map holds widgets that were created on behalf of the renderer but
1099 // that haven't shown yet. 1107 // haven't been shown yet.
1100 typedef std::map<int, RenderWidgetHostView*> PendingWidgetViews; 1108 std::map<ProcessRoutingIdPair, RenderWidgetHostView*> pending_widget_views_;
1101 PendingWidgetViews pending_widget_views_;
1102 1109
1103 typedef std::map<WebContentsImpl*, DestructionObserver*> DestructionObservers; 1110 typedef std::map<WebContentsImpl*, DestructionObserver*> DestructionObservers;
1104 DestructionObservers destruction_observers_; 1111 DestructionObservers destruction_observers_;
1105 1112
1106 // A list of observers notified when page state changes. Weak references. 1113 // A list of observers notified when page state changes. Weak references.
1107 // This MUST be listed above frame_tree_ since at destruction time the 1114 // This MUST be listed above frame_tree_ since at destruction time the
1108 // latter might cause RenderViewHost's destructor to call us and we might use 1115 // latter might cause RenderViewHost's destructor to call us and we might use
1109 // the observer list then. 1116 // the observer list then.
1110 base::ObserverList<WebContentsObserver> observers_; 1117 base::ObserverList<WebContentsObserver> observers_;
1111 1118
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1394 // Adds/removes a callback called on creation of each new WebContents. 1401 // Adds/removes a callback called on creation of each new WebContents.
1395 static void AddCreatedCallbackForTesting(const CreatedCallback& callback); 1402 static void AddCreatedCallbackForTesting(const CreatedCallback& callback);
1396 static void RemoveCreatedCallbackForTesting(const CreatedCallback& callback); 1403 static void RemoveCreatedCallbackForTesting(const CreatedCallback& callback);
1397 1404
1398 DISALLOW_COPY_AND_ASSIGN(FriendZone); 1405 DISALLOW_COPY_AND_ASSIGN(FriendZone);
1399 }; 1406 };
1400 1407
1401 } // namespace content 1408 } // namespace content
1402 1409
1403 #endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ 1410 #endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_
OLDNEW
« no previous file with comments | « content/browser/site_per_process_browsertest.cc ('k') | content/browser/web_contents/web_contents_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698