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

Side by Side Diff: chrome_frame/cfproxy.h

Issue 5998006: Clean up Automation and Chrome Frame IPC code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/ui/ui_test.cc ('k') | chrome_frame/cfproxy_private.h » ('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 (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_FRAME_CFPROXY_H_ 5 #ifndef CHROME_FRAME_CFPROXY_H_
6 #define CHROME_FRAME_CFPROXY_H_ 6 #define CHROME_FRAME_CFPROXY_H_
7 #pragma once 7 #pragma once
8 8
9 #include <windows.h> 9 #include <windows.h>
10 #include <map> // for proxy factory 10 #include <map> // for proxy factory
11 #include <vector> 11 #include <vector>
12 #include <string> 12 #include <string>
13 #include "base/lock.h" 13 #include "base/lock.h"
14 #include "base/time.h" // for base::TimeDelta 14 #include "base/time.h" // for base::TimeDelta
15 #include "base/file_path.h" 15 #include "base/file_path.h"
16 #include "chrome/common/automation_constants.h" 16 #include "chrome/common/automation_constants.h"
17 #include "chrome/common/page_zoom.h" 17 #include "chrome/common/page_zoom.h"
18 #include "ipc/ipc_channel.h"
18 19
19 enum FindInPageDirection { BACK = 0, FWD = 1 }; 20 enum FindInPageDirection { BACK = 0, FWD = 1 };
20 enum FindInPageCase { IGNORE_CASE = 0, CASE_SENSITIVE = 1 }; 21 enum FindInPageCase { IGNORE_CASE = 0, CASE_SENSITIVE = 1 };
21 // Specifies the font size on a page which is requested by an automation 22 // Specifies the font size on a page which is requested by an automation
22 // client. 23 // client.
23 enum AutomationPageFontSize { 24 enum AutomationPageFontSize {
24 SMALLEST_FONT = 8, 25 SMALLEST_FONT = 8,
25 SMALL_FONT = 12, 26 SMALL_FONT = 12,
26 MEDIUM_FONT = 16, 27 MEDIUM_FONT = 16,
27 LARGE_FONT = 24, 28 LARGE_FONT = 24,
28 LARGEST_FONT = 36 29 LARGEST_FONT = 36
29 }; 30 };
30 31
32 class ChromeProxyDelegate;
33 class ChromeProxyFactory;
34 class GURL;
31 class URLRequestStatus; 35 class URLRequestStatus;
32 namespace IPC { 36 struct AttachExternalTabParams;
33 struct ExternalTabSettings; 37 struct AutomationURLRequest;
34 struct NavigationInfo; 38 struct ExternalTabSettings;
35 struct AutomationURLRequest; 39 struct MiniContextMenuParams;
36 struct AttachExternalTabParams; 40 struct NavigationInfo;
37 struct MiniContextMenuParams;
38 };
39
40 class GURL;
41 class ChromeProxyFactory;
42 class ChromeProxyDelegate;
43 struct ProxyParams; 41 struct ProxyParams;
44 42
45 // Some callers of synchronous messages wants a context to be passed back 43 // Some callers of synchronous messages wants a context to be passed back
46 // in order to identify the call they made. Presumably one can make 44 // in order to identify the call they made. Presumably one can make
47 // multiple sync calls of same type (as async) and want to identify what 45 // multiple sync calls of same type (as async) and want to identify what
48 // is what. 46 // is what.
49 struct SyncMessageContext { 47 struct SyncMessageContext {
50 virtual ~SyncMessageContext() {} 48 virtual ~SyncMessageContext() {}
51 }; 49 };
52 50
(...skipping 29 matching lines...) Expand all
82 SyncMessageContext* ctx) = 0; 80 SyncMessageContext* ctx) = 0;
83 virtual void LoadExtension(ChromeProxyDelegate* delegate, 81 virtual void LoadExtension(ChromeProxyDelegate* delegate,
84 const FilePath& path, 82 const FilePath& path,
85 SyncMessageContext* ctx) = 0; 83 SyncMessageContext* ctx) = 0;
86 virtual void GetEnabledExtensions(ChromeProxyDelegate* delegate, 84 virtual void GetEnabledExtensions(ChromeProxyDelegate* delegate,
87 SyncMessageContext* ctx) = 0; 85 SyncMessageContext* ctx) = 0;
88 virtual void SetProxyConfig(const std::string& json_encoded_settings) = 0; 86 virtual void SetProxyConfig(const std::string& json_encoded_settings) = 0;
89 87
90 // Tab management. 88 // Tab management.
91 virtual void CreateTab(ChromeProxyDelegate* delegate, 89 virtual void CreateTab(ChromeProxyDelegate* delegate,
92 const IPC::ExternalTabSettings& settings) = 0; 90 const ExternalTabSettings& settings) = 0;
93 virtual void ConnectTab(ChromeProxyDelegate* delegate, HWND hwnd, 91 virtual void ConnectTab(ChromeProxyDelegate* delegate, HWND hwnd,
94 uint64 cookie) = 0; 92 uint64 cookie) = 0;
95 virtual void BlockTab(uint64 cookie) = 0; 93 virtual void BlockTab(uint64 cookie) = 0;
96 94
97 // Tab related. 95 // Tab related.
98 virtual void Tab_PostMessage(int tab, const std::string& message, 96 virtual void Tab_PostMessage(int tab, const std::string& message,
99 const std::string& origin, 97 const std::string& origin,
100 const std::string& target) = 0; 98 const std::string& target) = 0;
101 virtual void Tab_Reload(int tab) = 0; 99 virtual void Tab_Reload(int tab) = 0;
102 virtual void Tab_Stop(int tab) = 0; 100 virtual void Tab_Stop(int tab) = 0;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 virtual void Init(const ProxyParams& params) = 0; 133 virtual void Init(const ProxyParams& params) = 0;
136 virtual int AddDelegate(ChromeProxyDelegate* delegate) = 0; 134 virtual int AddDelegate(ChromeProxyDelegate* delegate) = 0;
137 virtual int RemoveDelegate(ChromeProxyDelegate* delegate) = 0; 135 virtual int RemoveDelegate(ChromeProxyDelegate* delegate) = 0;
138 }; 136 };
139 137
140 // The object that uses ChromeProxy should implement ChromeProxyDelegate in 138 // The object that uses ChromeProxy should implement ChromeProxyDelegate in
141 // order to get notified about important events/requests coming from the 139 // order to get notified about important events/requests coming from the
142 // instance of Chromium. 140 // instance of Chromium.
143 // Allow only one delegate per tab, i.e. delegate can handle only a single tab. 141 // Allow only one delegate per tab, i.e. delegate can handle only a single tab.
144 // Note: all of the methods are invoked always in a background IPC thread. 142 // Note: all of the methods are invoked always in a background IPC thread.
145 class ChromeProxyDelegate { 143 class ChromeProxyDelegate : public IPC::Channel::Listener {
146 public: 144 public:
147 enum DisconnectReason { 145 enum DisconnectReason {
148 CHROME_EXE_LAUNCH_FAILED, 146 CHROME_EXE_LAUNCH_FAILED,
149 CHROME_EXE_LAUNCH_TIMEOUT, 147 CHROME_EXE_LAUNCH_TIMEOUT,
150 CHANNEL_ERROR 148 CHANNEL_ERROR
151 }; 149 };
152 150
151 // IPC::Channel::Listener.
152 void OnMessageReceived(const IPC::Message& message) = 0;
153
153 virtual void Connected(ChromeProxy* proxy) = 0; 154 virtual void Connected(ChromeProxy* proxy) = 0;
154 virtual void Disconnected() = 0; 155 virtual void Disconnected() = 0;
155 virtual void PeerLost(ChromeProxy* proxy, DisconnectReason reason) = 0; 156 virtual void PeerLost(ChromeProxy* proxy, DisconnectReason reason) = 0;
156 virtual int tab_handle() = 0; // to avoid reverse lookup :) 157 virtual int tab_handle() = 0; // to avoid reverse lookup :)
157 158
158 // Sync message responses. 159 // Sync message responses.
159 virtual void Completed_CreateTab(bool success, HWND chrome_wnd, 160 virtual void Completed_CreateTab(bool success, HWND chrome_wnd,
160 HWND tab_window, int tab_handle, int session_id) = 0; 161 HWND tab_window, int tab_handle, int session_id) = 0;
161 virtual void Completed_ConnectToTab(bool success, HWND chrome_window, 162 virtual void Completed_ConnectToTab(bool success, HWND chrome_window,
162 HWND tab_window, int tab_handle, int session_id) = 0; 163 HWND tab_window, int tab_handle, int session_id) = 0;
163 virtual void Completed_Navigate(bool success, 164 virtual void Completed_Navigate(bool success,
164 enum AutomationMsg_NavigationResponseValues res) = 0; 165 enum AutomationMsg_NavigationResponseValues res) = 0;
165 virtual void Completed_InstallExtension(bool success, 166 virtual void Completed_InstallExtension(bool success,
166 AutomationMsg_ExtensionResponseValues res, SyncMessageContext* ctx) = 0; 167 AutomationMsg_ExtensionResponseValues res, SyncMessageContext* ctx) = 0;
167 virtual void Completed_LoadExpandedExtension(bool success, 168 virtual void Completed_LoadExpandedExtension(bool success,
168 AutomationMsg_ExtensionResponseValues res, SyncMessageContext* ctx) = 0; 169 AutomationMsg_ExtensionResponseValues res, SyncMessageContext* ctx) = 0;
169 virtual void Completed_GetEnabledExtensions(bool success, 170 virtual void Completed_GetEnabledExtensions(bool success,
170 const std::vector<FilePath>* extensions) = 0; 171 const std::vector<FilePath>* extensions) = 0;
171 172
172 // Network requests from Chrome.
173 virtual void Network_Start(int request_id,
174 const IPC::AutomationURLRequest& request_info) = 0;
175 virtual void Network_Read(int request_id, int bytes_to_read) = 0;
176 virtual void Network_End(int request_id, const URLRequestStatus& status) = 0;
177 virtual void Network_DownloadInHost(int request_id) = 0;
178 virtual void GetCookies(const GURL& url, int cookie_id) = 0;
179 virtual void SetCookie(const GURL& url, const std::string& cookie) = 0;
180
181 // Navigation progress notifications.
182 virtual void NavigationStateChanged(int flags,
183 const IPC::NavigationInfo& nav_info) = 0;
184 virtual void UpdateTargetUrl(const std::wstring& url) = 0;
185 virtual void NavigationFailed(int error_code, const GURL& gurl) = 0;
186 virtual void DidNavigate(const IPC::NavigationInfo& navigation_info) = 0;
187 virtual void TabLoaded(const GURL& url) = 0;
188
189 // Navigation and messaging.
190 virtual void OpenURL(const GURL& url_to_open, const GURL& referrer,
191 int open_disposition) = 0;
192 virtual void GoToHistoryOffset(int offset) = 0;
193 virtual void MessageToHost(const std::string& message,
194 const std::string& origin,
195 const std::string& target) = 0;
196 // Misc. UI.
197 virtual void HandleAccelerator(const MSG& accel_message) = 0;
198 virtual void HandleContextMenu(HANDLE menu_handle, int align_flags,
199 const IPC::MiniContextMenuParams& params) = 0;
200 virtual void TabbedOut(bool reverse) = 0;
201
202 // Tab related.
203 virtual void TabClosed() = 0;
204 virtual void AttachTab(const IPC::AttachExternalTabParams& attach_params) = 0;
205 protected: 173 protected:
206 ~ChromeProxyDelegate() {} 174 ~ChromeProxyDelegate() {}
207 }; 175 };
208 176
209 // a way to obtain a ChromeProxy implementation 177 // a way to obtain a ChromeProxy implementation
210 struct ProxyParams { 178 struct ProxyParams {
211 std::string profile; 179 std::string profile;
212 std::wstring extra_params; 180 std::wstring extra_params;
213 FilePath profile_path; 181 FilePath profile_path;
214 base::TimeDelta timeout; 182 base::TimeDelta timeout;
215 }; 183 };
216 184
217 class ChromeProxyFactory { 185 class ChromeProxyFactory {
218 public: 186 public:
219 ChromeProxyFactory(); 187 ChromeProxyFactory();
220 ~ChromeProxyFactory(); 188 ~ChromeProxyFactory();
221 void GetProxy(ChromeProxyDelegate* delegate, const ProxyParams& params); 189 void GetProxy(ChromeProxyDelegate* delegate, const ProxyParams& params);
222 bool ReleaseProxy(ChromeProxyDelegate* delegate, const std::string& profile); 190 bool ReleaseProxy(ChromeProxyDelegate* delegate, const std::string& profile);
223 protected: 191 protected:
224 virtual ChromeProxy* CreateProxy(); 192 virtual ChromeProxy* CreateProxy();
225 typedef std::map<std::string, ChromeProxy*> ProxyMap; 193 typedef std::map<std::string, ChromeProxy*> ProxyMap;
226 ProxyMap proxies_; 194 ProxyMap proxies_;
227 Lock lock_; 195 Lock lock_;
228 }; 196 };
229 197
230 #endif // CHROME_FRAME_CFPROXY_H_ 198 #endif // CHROME_FRAME_CFPROXY_H_
OLDNEW
« no previous file with comments | « chrome/test/ui/ui_test.cc ('k') | chrome_frame/cfproxy_private.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698