| 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 // This implements a browser-side endpoint for UI automation activity. | 5 // This implements a browser-side endpoint for UI automation activity. |
| 6 // The client-side endpoint is implemented by AutomationProxy. | 6 // The client-side endpoint is implemented by AutomationProxy. |
| 7 // The entire lifetime of this object should be contained within that of | 7 // The entire lifetime of this object should be contained within that of |
| 8 // the BrowserProcess, and in particular the NotificationService that's | 8 // the BrowserProcess, and in particular the NotificationService that's |
| 9 // hung off of it. | 9 // hung off of it. |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "base/memory/weak_ptr.h" | 22 #include "base/memory/weak_ptr.h" |
| 23 #include "base/observer_list.h" | 23 #include "base/observer_list.h" |
| 24 #include "base/sequenced_task_runner_helpers.h" | 24 #include "base/sequenced_task_runner_helpers.h" |
| 25 #include "base/strings/string16.h" | 25 #include "base/strings/string16.h" |
| 26 #include "chrome/browser/common/cancelable_request.h" | 26 #include "chrome/browser/common/cancelable_request.h" |
| 27 #include "chrome/common/automation_constants.h" | 27 #include "chrome/common/automation_constants.h" |
| 28 #include "chrome/common/content_settings.h" | 28 #include "chrome/common/content_settings.h" |
| 29 #include "components/autofill/core/browser/field_types.h" | 29 #include "components/autofill/core/browser/field_types.h" |
| 30 #include "content/public/browser/browser_thread.h" | 30 #include "content/public/browser/browser_thread.h" |
| 31 #include "content/public/browser/notification_observer.h" | 31 #include "content/public/browser/notification_observer.h" |
| 32 #include "content/public/browser/trace_subscriber.h" |
| 32 #include "ipc/ipc_channel.h" | 33 #include "ipc/ipc_channel.h" |
| 33 #include "ipc/ipc_listener.h" | 34 #include "ipc/ipc_listener.h" |
| 34 #include "ipc/ipc_sender.h" | 35 #include "ipc/ipc_sender.h" |
| 35 | 36 |
| 36 #if defined(OS_WIN) && !defined(USE_AURA) | 37 #if defined(OS_WIN) && !defined(USE_AURA) |
| 37 #include "ui/gfx/native_widget_types.h" | 38 #include "ui/gfx/native_widget_types.h" |
| 38 #endif // defined(OS_WIN) && !defined(USE_AURA) | 39 #endif // defined(OS_WIN) && !defined(USE_AURA) |
| 39 | 40 |
| 40 class AutomationBrowserTracker; | 41 class AutomationBrowserTracker; |
| 41 class AutomationResourceMessageFilter; | 42 class AutomationResourceMessageFilter; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 | 75 |
| 75 namespace gfx { | 76 namespace gfx { |
| 76 class Point; | 77 class Point; |
| 77 } | 78 } |
| 78 | 79 |
| 79 class AutomationProvider | 80 class AutomationProvider |
| 80 : public IPC::Listener, | 81 : public IPC::Listener, |
| 81 public IPC::Sender, | 82 public IPC::Sender, |
| 82 public base::SupportsWeakPtr<AutomationProvider>, | 83 public base::SupportsWeakPtr<AutomationProvider>, |
| 83 public base::RefCountedThreadSafe< | 84 public base::RefCountedThreadSafe< |
| 84 AutomationProvider, content::BrowserThread::DeleteOnUIThread> { | 85 AutomationProvider, content::BrowserThread::DeleteOnUIThread>, |
| 86 public content::TraceSubscriber { |
| 85 public: | 87 public: |
| 86 explicit AutomationProvider(Profile* profile); | 88 explicit AutomationProvider(Profile* profile); |
| 87 | 89 |
| 88 Profile* profile() const { return profile_; } | 90 Profile* profile() const { return profile_; } |
| 89 | 91 |
| 90 void set_profile(Profile* profile); | 92 void set_profile(Profile* profile); |
| 91 | 93 |
| 92 // Initializes a channel for a connection to an AutomationProxy. | 94 // Initializes a channel for a connection to an AutomationProxy. |
| 93 // If channel_id starts with kNamedInterfacePrefix, it will act | 95 // If channel_id starts with kNamedInterfacePrefix, it will act |
| 94 // as a server, create a named IPC socket with channel_id as its | 96 // as a server, create a named IPC socket with channel_id as its |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 bool find_next, | 208 bool find_next, |
| 207 IPC::Message* reply_message); | 209 IPC::Message* reply_message); |
| 208 | 210 |
| 209 scoped_refptr<AutomationResourceMessageFilter> | 211 scoped_refptr<AutomationResourceMessageFilter> |
| 210 automation_resource_message_filter_; | 212 automation_resource_message_filter_; |
| 211 | 213 |
| 212 // True iff we should open a new automation IPC channel if it closes. | 214 // True iff we should open a new automation IPC channel if it closes. |
| 213 bool reinitialize_on_channel_error_; | 215 bool reinitialize_on_channel_error_; |
| 214 | 216 |
| 215 private: | 217 private: |
| 218 // Storage for EndTracing() to resume operations after a callback. |
| 219 struct TracingData { |
| 220 std::list<std::string> trace_output; |
| 221 scoped_ptr<IPC::Message> reply_message; |
| 222 }; |
| 223 |
| 224 // TraceSubscriber: |
| 225 virtual void OnEndTracingComplete() OVERRIDE; |
| 226 virtual void OnTraceDataCollected( |
| 227 const scoped_refptr<base::RefCountedString>& trace_fragment) OVERRIDE; |
| 228 |
| 216 void OnUnhandledMessage(const IPC::Message& message); | 229 void OnUnhandledMessage(const IPC::Message& message); |
| 217 | 230 |
| 218 // Clear and reinitialize the automation IPC channel. | 231 // Clear and reinitialize the automation IPC channel. |
| 219 bool ReinitializeChannel(); | 232 bool ReinitializeChannel(); |
| 220 | 233 |
| 221 void HandleUnused(const IPC::Message& message, int handle); | 234 void HandleUnused(const IPC::Message& message, int handle); |
| 222 void GetFilteredInetHitCount(int* hit_count); | 235 void GetFilteredInetHitCount(int* hit_count); |
| 223 void SetProxyConfig(const std::string& new_proxy_config); | 236 void SetProxyConfig(const std::string& new_proxy_config); |
| 224 | 237 |
| 225 // Responds to the FindInPage request, retrieves the search query parameters, | 238 // Responds to the FindInPage request, retrieves the search query parameters, |
| 226 // launches an observer to listen for results and issues a StartFind request. | 239 // launches an observer to listen for results and issues a StartFind request. |
| 227 void HandleFindRequest(int handle, | 240 void HandleFindRequest(int handle, |
| 228 const AutomationMsg_Find_Params& params, | 241 const AutomationMsg_Find_Params& params, |
| 229 IPC::Message* reply_message); | 242 IPC::Message* reply_message); |
| 230 | 243 |
| 231 void OnSetPageFontSize(int tab_handle, int font_size); | 244 void OnSetPageFontSize(int tab_handle, int font_size); |
| 232 | 245 |
| 233 // See browsing_data_remover.h for explanation of bitmap fields. | 246 // See browsing_data_remover.h for explanation of bitmap fields. |
| 234 void RemoveBrowsingData(int remove_mask); | 247 void RemoveBrowsingData(int remove_mask); |
| 235 | 248 |
| 236 // Notify the JavaScript engine in the render to change its parameters | 249 // Notify the JavaScript engine in the render to change its parameters |
| 237 // while performing stress testing. See | 250 // while performing stress testing. See |
| 238 // |ViewHostMsg_JavaScriptStressTestControl_Commands| in render_messages.h | 251 // |ViewHostMsg_JavaScriptStressTestControl_Commands| in render_messages.h |
| 239 // for information on the arguments. | 252 // for information on the arguments. |
| 240 void JavaScriptStressTestControl(int handle, int cmd, int param); | 253 void JavaScriptStressTestControl(int handle, int cmd, int param); |
| 241 | 254 |
| 242 void BeginTracing(const std::string& category_patterns, bool* success); | 255 void BeginTracing(const std::string& category_patterns, bool* success); |
| 243 void EndTracing(IPC::Message* reply_message); | 256 void EndTracing(IPC::Message* reply_message); |
| 244 void OnTraceDataCollected(IPC::Message* reply_message, | 257 void GetTracingOutput(std::string* chunk, bool* success); |
| 245 const base::FilePath& path); | |
| 246 | 258 |
| 247 // Asynchronous request for printing the current tab. | 259 // Asynchronous request for printing the current tab. |
| 248 void PrintAsync(int tab_handle); | 260 void PrintAsync(int tab_handle); |
| 249 | 261 |
| 250 // Uses the specified encoding to override the encoding of the page in the | 262 // Uses the specified encoding to override the encoding of the page in the |
| 251 // specified tab. | 263 // specified tab. |
| 252 void OverrideEncoding(int tab_handle, | 264 void OverrideEncoding(int tab_handle, |
| 253 const std::string& encoding_name, | 265 const std::string& encoding_name, |
| 254 bool* success); | 266 bool* success); |
| 255 | 267 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 | 344 |
| 333 // True iff browser finished loading initial set of tabs. | 345 // True iff browser finished loading initial set of tabs. |
| 334 bool initial_tab_loads_complete_; | 346 bool initial_tab_loads_complete_; |
| 335 | 347 |
| 336 // True iff ChromeOS webui login ui is ready. | 348 // True iff ChromeOS webui login ui is ready. |
| 337 bool login_webui_ready_; | 349 bool login_webui_ready_; |
| 338 | 350 |
| 339 // ID of automation channel. | 351 // ID of automation channel. |
| 340 std::string channel_id_; | 352 std::string channel_id_; |
| 341 | 353 |
| 354 // Trace data that has been collected but not flushed to the automation |
| 355 // client. |
| 356 TracingData tracing_data_; |
| 357 |
| 342 DISALLOW_COPY_AND_ASSIGN(AutomationProvider); | 358 DISALLOW_COPY_AND_ASSIGN(AutomationProvider); |
| 343 }; | 359 }; |
| 344 | 360 |
| 345 #endif // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_H_ | 361 #endif // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_H_ |
| OLD | NEW |