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

Side by Side Diff: chrome_frame/chrome_frame_automation.h

Issue 545093: Refactor host network (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « chrome_frame/chrome_frame_activex_base.h ('k') | chrome_frame/chrome_frame_automation.cc » ('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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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_CHROME_FRAME_AUTOMATION_H_ 5 #ifndef CHROME_FRAME_CHROME_FRAME_AUTOMATION_H_
6 #define CHROME_FRAME_CHROME_FRAME_AUTOMATION_H_ 6 #define CHROME_FRAME_CHROME_FRAME_AUTOMATION_H_
7 7
8 #include <atlbase.h> 8 #include <atlbase.h>
9 #include <atlwin.h> 9 #include <atlwin.h>
10 #include <string> 10 #include <string>
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // Interval for sending UMA data 141 // Interval for sending UMA data
142 int uma_send_interval_; 142 int uma_send_interval_;
143 }; 143 };
144 144
145 // Handles all automation requests initiated from the chrome frame objects. 145 // Handles all automation requests initiated from the chrome frame objects.
146 // These include the chrome tab/chrome frame activex/chrome frame npapi 146 // These include the chrome tab/chrome frame activex/chrome frame npapi
147 // plugin objects. 147 // plugin objects.
148 class ChromeFrameAutomationClient 148 class ChromeFrameAutomationClient
149 : public CWindowImpl<ChromeFrameAutomationClient>, 149 : public CWindowImpl<ChromeFrameAutomationClient>,
150 public TaskMarshallerThroughWindowsMessages<ChromeFrameAutomationClient>, 150 public TaskMarshallerThroughWindowsMessages<ChromeFrameAutomationClient>,
151 public PluginRequestHandler, 151 public base::RefCountedThreadSafe<ChromeFrameAutomationClient>,
152 public PluginUrlRequestDelegate,
152 public TabProxy::TabProxyDelegate, 153 public TabProxy::TabProxyDelegate,
153 public ProxyFactory::LaunchDelegate { 154 public ProxyFactory::LaunchDelegate {
154 public: 155 public:
155 ChromeFrameAutomationClient(); 156 ChromeFrameAutomationClient();
156 ~ChromeFrameAutomationClient(); 157 ~ChromeFrameAutomationClient();
157 158
158 // Called from UI thread. 159 // Called from UI thread.
159 virtual bool Initialize(ChromeFrameDelegate* chrome_frame_delegate, 160 virtual bool Initialize(ChromeFrameDelegate* chrome_frame_delegate,
160 int automation_server_launch_timeout, 161 int automation_server_launch_timeout,
161 bool perform_version_check, 162 bool perform_version_check,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 // Returns the version number of plugin dll. 221 // Returns the version number of plugin dll.
221 std::wstring GetVersion() const; 222 std::wstring GetVersion() const;
222 223
223 // BitBlts the contents of the chrome window to the print dc. 224 // BitBlts the contents of the chrome window to the print dc.
224 void Print(HDC print_dc, const RECT& print_bounds); 225 void Print(HDC print_dc, const RECT& print_bounds);
225 226
226 // Called in full tab mode and indicates a request to chrome to print 227 // Called in full tab mode and indicates a request to chrome to print
227 // the whole tab. 228 // the whole tab.
228 void PrintTab(); 229 void PrintTab();
229 230
230 // PluginRequestHandler
231 bool AddRequest(PluginUrlRequest* request);
232 void RemoveRequest(PluginUrlRequest* request);
233 virtual bool Send(IPC::Message* msg);
234
235 // URL request related
236 bool ReadRequest(int request_id, int bytes_to_read);
237 void RemoveRequest(int request_id, bool abort);
238 PluginUrlRequest* LookupRequest(int request_id) const;
239 bool IsValidRequest(PluginUrlRequest* request) const;
240 void CleanupRequests();
241
242 void set_use_chrome_network(bool use_chrome_network) { 231 void set_use_chrome_network(bool use_chrome_network) {
243 use_chrome_network_ = use_chrome_network; 232 use_chrome_network_ = use_chrome_network;
244 } 233 }
245 bool use_chrome_network() const { 234 bool use_chrome_network() const {
246 return use_chrome_network_; 235 return use_chrome_network_;
247 } 236 }
248 237
249 #ifdef UNIT_TEST 238 #ifdef UNIT_TEST
250 void set_proxy_factory(ProxyFactory* factory) { 239 void set_proxy_factory(ProxyFactory* factory) {
251 proxy_factory_ = factory; 240 proxy_factory_ = factory;
252 } 241 }
253 #endif 242 #endif
254 243
255 void set_handle_top_level_requests(bool handle_top_level_requests) { 244 void set_handle_top_level_requests(bool handle_top_level_requests) {
256 handle_top_level_requests_ = handle_top_level_requests; 245 handle_top_level_requests_ = handle_top_level_requests;
257 } 246 }
258 247
259 // Called if the same instance of the ChromeFrameAutomationClient object 248 // Called if the same instance of the ChromeFrameAutomationClient object
260 // is reused. 249 // is reused.
261 bool Reinitialize(ChromeFrameDelegate* chrome_frame_delegate); 250 bool Reinitialize(ChromeFrameDelegate* chrome_frame_delegate,
251 PluginUrlRequestManager* url_fetcher);
262 252
263 // Attaches an existing external tab to this automation client instance. 253 // Attaches an existing external tab to this automation client instance.
264 void AttachExternalTab(intptr_t external_tab_cookie); 254 void AttachExternalTab(intptr_t external_tab_cookie);
265 255
266 void SetPageFontSize(enum AutomationPageFontSize); 256 void SetPageFontSize(enum AutomationPageFontSize);
267 257
268 protected: 258 protected:
269 // ChromeFrameAutomationProxy::LaunchDelegate implementation. 259 // ChromeFrameAutomationProxy::LaunchDelegate implementation.
270 virtual void LaunchComplete(ChromeFrameAutomationProxy* proxy, 260 virtual void LaunchComplete(ChromeFrameAutomationProxy* proxy,
271 AutomationLaunchResult result); 261 AutomationLaunchResult result);
272 // TabProxyDelegate implementation 262 // TabProxyDelegate implementation
273 virtual void OnMessageReceived(TabProxy* tab, const IPC::Message& msg); 263 virtual void OnMessageReceived(TabProxy* tab, const IPC::Message& msg);
274 264
275 void CreateExternalTab(); 265 void CreateExternalTab();
276 void CreateExternalTabComplete(HWND chrome_window, HWND tab_window, 266 void CreateExternalTabComplete(HWND chrome_window, HWND tab_window,
277 int tab_handle); 267 int tab_handle);
278 // Called in UI thread. Here we fire event to the client notifying for 268 // Called in UI thread. Here we fire event to the client notifying for
279 // the result of Initialize() method call. 269 // the result of Initialize() method call.
280 void InitializeComplete(AutomationLaunchResult result); 270 void InitializeComplete(AutomationLaunchResult result);
281 271
282 private: 272 private:
283 typedef std::map<int, scoped_refptr<PluginUrlRequest> > RequestMap;
284
285 // Usage: From bkgnd thread invoke: 273 // Usage: From bkgnd thread invoke:
286 // CallDelegate(FROM_HERE, NewRunnableMethod(chrome_frame_delegate_, 274 // CallDelegate(FROM_HERE, NewRunnableMethod(chrome_frame_delegate_,
287 // ChromeFrameDelegate::Something, 275 // ChromeFrameDelegate::Something,
288 // param1, 276 // param1,
289 // param2)); 277 // param2));
290 void CallDelegate(const tracked_objects::Location& from_here, 278 void CallDelegate(const tracked_objects::Location& from_here,
291 Task* delegate_task); 279 Task* delegate_task);
292 // The workhorse method called in main/GUI thread which is going to 280 // The workhorse method called in main/GUI thread which is going to
293 // execute ChromeFrameDelegate method encapsulated in delegate_task. 281 // execute ChromeFrameDelegate method encapsulated in delegate_task.
294 void CallDelegateImpl(Task* delegate_task); 282 void CallDelegateImpl(Task* delegate_task);
(...skipping 21 matching lines...) Expand all
316 GURL url_; 304 GURL url_;
317 GURL referrer_; 305 GURL referrer_;
318 306
319 // Handle to the underlying chrome window. This is a child of the external 307 // Handle to the underlying chrome window. This is a child of the external
320 // tab window. 308 // tab window.
321 HWND tab_window_; 309 HWND tab_window_;
322 310
323 // Keeps track of the version of Chrome we're talking to. 311 // Keeps track of the version of Chrome we're talking to.
324 std::string automation_server_version_; 312 std::string automation_server_version_;
325 313
326 // Map of outstanding requests
327 RequestMap request_map_;
328
329 typedef enum InitializationState { 314 typedef enum InitializationState {
330 UNINITIALIZED = 0, 315 UNINITIALIZED = 0,
331 INITIALIZING, 316 INITIALIZING,
332 INITIALIZED, 317 INITIALIZED,
333 UNINITIALIZING, 318 UNINITIALIZING,
334 }; 319 };
335 320
336 InitializationState init_state_; 321 InitializationState init_state_;
337 bool use_chrome_network_; 322 bool use_chrome_network_;
338 bool handle_top_level_requests_; 323 bool handle_top_level_requests_;
339 ProxyFactory* proxy_factory_; 324 ProxyFactory* proxy_factory_;
340 int tab_handle_; 325 int tab_handle_;
341 // Only used if we attach to an existing tab. 326 // Only used if we attach to an existing tab.
342 intptr_t external_tab_cookie_; 327 intptr_t external_tab_cookie_;
343 328
344 // Set to true if we received a navigation request prior to the automation 329 // Set to true if we received a navigation request prior to the automation
345 // server being initialized. 330 // server being initialized.
346 bool navigate_after_initialization_; 331 bool navigate_after_initialization_;
347 332
348 ChromeFrameLaunchParams chrome_launch_params_; 333 ChromeFrameLaunchParams chrome_launch_params_;
334
335 // When host network stack is used, this object is in charge of
336 // handling network requests.
337 PluginUrlRequestManager* url_fetcher_;
338 bool thread_safe_url_fetcher_;
339
340 bool ProcessUrlRequestMessage(TabProxy* tab, const IPC::Message& msg,
341 bool ui_thread);
342
343 // PluginUrlRequestDelegate implementation. Simply adds tab's handle
344 // as parameter and forwards to Chrome via IPC.
345 virtual void OnResponseStarted(int request_id, const char* mime_type,
346 const char* headers, int size, base::Time last_modified,
347 const std::string& peristent_cookies, const std::string& redirect_url,
348 int redirect_status);
349 virtual void OnReadComplete(int request_id, const void* buffer, int len);
350 virtual void OnResponseEnd(int request_id, const URLRequestStatus& status);
351
352 public:
353 void SetUrlFetcher(PluginUrlRequestManager* url_fetcher) {
354 DCHECK(url_fetcher != NULL);
355 url_fetcher_ = url_fetcher;
356 thread_safe_url_fetcher_ = url_fetcher->IsThreadSafe();
357 url_fetcher_->set_delegate(this);
358 }
349 }; 359 };
350 360
351 #endif // CHROME_FRAME_CHROME_FRAME_AUTOMATION_H_ 361 #endif // CHROME_FRAME_CHROME_FRAME_AUTOMATION_H_
OLDNEW
« no previous file with comments | « chrome_frame/chrome_frame_activex_base.h ('k') | chrome_frame/chrome_frame_automation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698