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

Side by Side Diff: chrome/browser/guest_view/web_view/web_view_guest.h

Issue 336283002: Remove GuestWebContentsCreated (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simplify_creation
Patch Set: Addressed comments Created 6 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
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 #ifndef CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ 5 #ifndef CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_
6 #define CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ 6 #define CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/observer_list.h" 10 #include "base/observer_list.h"
(...skipping 26 matching lines...) Expand all
37 37
38 // A WebViewGuest provides the browser-side implementation of the <webview> API 38 // A WebViewGuest provides the browser-side implementation of the <webview> API
39 // and manages the dispatch of <webview> extension events. WebViewGuest is 39 // and manages the dispatch of <webview> extension events. WebViewGuest is
40 // created on attachment. That is, when a guest WebContents is associated with 40 // created on attachment. That is, when a guest WebContents is associated with
41 // a particular embedder WebContents. This happens on either initial navigation 41 // a particular embedder WebContents. This happens on either initial navigation
42 // or through the use of the New Window API, when a new window is attached to 42 // or through the use of the New Window API, when a new window is attached to
43 // a particular <webview>. 43 // a particular <webview>.
44 class WebViewGuest : public GuestView<WebViewGuest>, 44 class WebViewGuest : public GuestView<WebViewGuest>,
45 public content::NotificationObserver { 45 public content::NotificationObserver {
46 public: 46 public:
47 WebViewGuest(int guest_instance_id, 47 explicit WebViewGuest(int guest_instance_id);
48 content::WebContents* guest_web_contents,
49 const std::string& embedder_extension_id);
50 48
51 // For WebViewGuest, we create special guest processes, which host the 49 // For WebViewGuest, we create special guest processes, which host the
52 // tag content separately from the main application that embeds the tag. 50 // tag content separately from the main application that embeds the tag.
53 // A <webview> can specify both the partition name and whether the storage 51 // A <webview> can specify both the partition name and whether the storage
54 // for that partition should be persisted. Each tag gets a SiteInstance with 52 // for that partition should be persisted. Each tag gets a SiteInstance with
55 // a specially formatted URL, based on the application it is hosted by and 53 // a specially formatted URL, based on the application it is hosted by and
56 // the partition requested by it. The format for that URL is: 54 // the partition requested by it. The format for that URL is:
57 // chrome-guest://partition_domain/persist?partition_name 55 // chrome-guest://partition_domain/persist?partition_name
58 static bool GetGuestPartitionConfigForSite(const GURL& site, 56 static bool GetGuestPartitionConfigForSite(const GURL& site,
59 std::string* partition_domain, 57 std::string* partition_domain,
60 std::string* partition_name, 58 std::string* partition_name,
61 bool* in_memory); 59 bool* in_memory);
62 60
63 // Returns guestview::kInstanceIDNone if |contents| does not correspond to a 61 // Returns guestview::kInstanceIDNone if |contents| does not correspond to a
64 // WebViewGuest. 62 // WebViewGuest.
65 static int GetViewInstanceId(content::WebContents* contents); 63 static int GetViewInstanceId(content::WebContents* contents);
66 // Parses partition related parameters from |extra_params|. 64
67 // |storage_partition_id| is the parsed partition ID and |persist_storage|
68 // specifies whether or not the partition is in memory.
69 static void ParsePartitionParam(const base::DictionaryValue* extra_params,
70 std::string* storage_partition_id,
71 bool* persist_storage);
72 static const char Type[]; 65 static const char Type[];
73 66
74 // Request navigating the guest to the provided |src| URL. 67 // Request navigating the guest to the provided |src| URL.
75 void NavigateGuest(const std::string& src); 68 void NavigateGuest(const std::string& src);
76 69
77 typedef std::vector<linked_ptr<webview_api::ContextMenuItem> > MenuItemVector; 70 typedef std::vector<linked_ptr<webview_api::ContextMenuItem> > MenuItemVector;
78 // Shows the context menu for the guest. 71 // Shows the context menu for the guest.
79 // |items| acts as a filter. This restricts the current context's default 72 // |items| acts as a filter. This restricts the current context's default
80 // menu items to contain only the items from |items|. 73 // menu items to contain only the items from |items|.
81 // |items| == NULL means no filtering will be applied. 74 // |items| == NULL means no filtering will be applied.
82 void ShowContextMenu(int request_id, const MenuItemVector* items); 75 void ShowContextMenu(int request_id, const MenuItemVector* items);
83 76
84 // Sets the frame name of the guest. 77 // Sets the frame name of the guest.
85 void SetName(const std::string& name); 78 void SetName(const std::string& name);
86 79
87 // Set the zoom factor. 80 // Set the zoom factor.
88 void SetZoom(double zoom_factor); 81 void SetZoom(double zoom_factor);
89 82
90 // GuestViewBase implementation. 83 // GuestViewBase implementation.
84 virtual void CreateWebContents(
85 const std::string& embedder_extension_id,
86 int embedder_render_process_id,
87 const base::DictionaryValue& create_params,
88 const WebContentsCreatedCallback& callback) OVERRIDE;
91 virtual void DidAttachToEmbedder() OVERRIDE; 89 virtual void DidAttachToEmbedder() OVERRIDE;
90 virtual void DidInitialize() OVERRIDE;
92 virtual void DidStopLoading() OVERRIDE; 91 virtual void DidStopLoading() OVERRIDE;
93 virtual void EmbedderDestroyed() OVERRIDE; 92 virtual void EmbedderDestroyed() OVERRIDE;
94 virtual void GuestDestroyed() OVERRIDE; 93 virtual void GuestDestroyed() OVERRIDE;
95 virtual bool IsDragAndDropEnabled() const OVERRIDE; 94 virtual bool IsDragAndDropEnabled() const OVERRIDE;
96 virtual void WillAttachToEmbedder() OVERRIDE; 95 virtual void WillAttachToEmbedder() OVERRIDE;
97 virtual void WillDestroy() OVERRIDE; 96 virtual void WillDestroy() OVERRIDE;
98 97
99 // WebContentsDelegate implementation. 98 // WebContentsDelegate implementation.
100 virtual bool AddMessageToConsole(content::WebContents* source, 99 virtual bool AddMessageToConsole(content::WebContents* source,
101 int32 level, 100 int32 level,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 virtual content::WebContents* OpenURLFromTab( 143 virtual content::WebContents* OpenURLFromTab(
145 content::WebContents* source, 144 content::WebContents* source,
146 const content::OpenURLParams& params) OVERRIDE; 145 const content::OpenURLParams& params) OVERRIDE;
147 virtual void WebContentsCreated(content::WebContents* source_contents, 146 virtual void WebContentsCreated(content::WebContents* source_contents,
148 int opener_render_frame_id, 147 int opener_render_frame_id,
149 const base::string16& frame_name, 148 const base::string16& frame_name,
150 const GURL& target_url, 149 const GURL& target_url,
151 content::WebContents* new_contents) OVERRIDE; 150 content::WebContents* new_contents) OVERRIDE;
152 151
153 // BrowserPluginGuestDelegate implementation. 152 // BrowserPluginGuestDelegate implementation.
153 virtual content::WebContents* CreateNewGuestWindow(
154 const content::WebContents::CreateParams& create_params) OVERRIDE;
154 virtual void SizeChanged(const gfx::Size& old_size, const gfx::Size& new_size) 155 virtual void SizeChanged(const gfx::Size& old_size, const gfx::Size& new_size)
155 OVERRIDE; 156 OVERRIDE;
156 virtual void RequestPointerLockPermission( 157 virtual void RequestPointerLockPermission(
157 bool user_gesture, 158 bool user_gesture,
158 bool last_unlocked_by_target, 159 bool last_unlocked_by_target,
159 const base::Callback<void(bool)>& callback) OVERRIDE; 160 const base::Callback<void(bool)>& callback) OVERRIDE;
160 // NotificationObserver implementation. 161 // NotificationObserver implementation.
161 virtual void Observe(int type, 162 virtual void Observe(int type,
162 const content::NotificationSource& source, 163 const content::NotificationSource& source,
163 const content::NotificationDetails& details) OVERRIDE; 164 const content::NotificationDetails& details) OVERRIDE;
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 423
423 // Notification that a load in the guest resulted in abort. Note that |url| 424 // Notification that a load in the guest resulted in abort. Note that |url|
424 // may be invalid. 425 // may be invalid.
425 void LoadAbort(bool is_top_level, 426 void LoadAbort(bool is_top_level,
426 const GURL& url, 427 const GURL& url,
427 const std::string& error_type); 428 const std::string& error_type);
428 429
429 void OnUpdateFrameName(bool is_top_level, const std::string& name); 430 void OnUpdateFrameName(bool is_top_level, const std::string& name);
430 431
431 // Creates a new guest window owned by this WebViewGuest. 432 // Creates a new guest window owned by this WebViewGuest.
432 WebViewGuest* CreateNewGuestWindow(const content::OpenURLParams& params); 433 WebViewGuest* CreateNewGuestWebViewWindow(
434 const content::OpenURLParams& params);
433 435
434 bool HandleKeyboardShortcuts(const content::NativeWebKeyboardEvent& event); 436 bool HandleKeyboardShortcuts(const content::NativeWebKeyboardEvent& event);
435 437
436 ObserverList<extensions::TabHelper::ScriptExecutionObserver> 438 ObserverList<extensions::TabHelper::ScriptExecutionObserver>
437 script_observers_; 439 script_observers_;
438 scoped_ptr<extensions::ScriptExecutor> script_executor_; 440 scoped_ptr<extensions::ScriptExecutor> script_executor_;
439 441
440 content::NotificationRegistrar notification_registrar_; 442 content::NotificationRegistrar notification_registrar_;
441 443
442 // A counter to generate a unique request id for a context menu request. 444 // A counter to generate a unique request id for a context menu request.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 changed(false) {} 500 changed(false) {}
499 }; 501 };
500 502
501 typedef std::map<WebViewGuest*, NewWindowInfo> PendingWindowMap; 503 typedef std::map<WebViewGuest*, NewWindowInfo> PendingWindowMap;
502 PendingWindowMap pending_new_windows_; 504 PendingWindowMap pending_new_windows_;
503 505
504 DISALLOW_COPY_AND_ASSIGN(WebViewGuest); 506 DISALLOW_COPY_AND_ASSIGN(WebViewGuest);
505 }; 507 };
506 508
507 #endif // CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ 509 #endif // CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698