OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "chrome/browser/automation/automation_provider.h" | 5 #include "chrome/browser/automation/automation_provider.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 27 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
28 #include "chrome/browser/autofill/autofill_manager.h" | 28 #include "chrome/browser/autofill/autofill_manager.h" |
29 #include "chrome/browser/automation/automation_autocomplete_edit_tracker.h" | 29 #include "chrome/browser/automation/automation_autocomplete_edit_tracker.h" |
30 #include "chrome/browser/automation/automation_browser_tracker.h" | 30 #include "chrome/browser/automation/automation_browser_tracker.h" |
31 #include "chrome/browser/automation/automation_extension_tracker.h" | 31 #include "chrome/browser/automation/automation_extension_tracker.h" |
32 #include "chrome/browser/automation/automation_provider_list.h" | 32 #include "chrome/browser/automation/automation_provider_list.h" |
33 #include "chrome/browser/automation/automation_provider_observers.h" | 33 #include "chrome/browser/automation/automation_provider_observers.h" |
34 #include "chrome/browser/automation/automation_resource_message_filter.h" | 34 #include "chrome/browser/automation/automation_resource_message_filter.h" |
35 #include "chrome/browser/automation/automation_tab_tracker.h" | 35 #include "chrome/browser/automation/automation_tab_tracker.h" |
36 #include "chrome/browser/automation/automation_window_tracker.h" | 36 #include "chrome/browser/automation/automation_window_tracker.h" |
37 #include "chrome/browser/automation/extension_port_container.h" | |
38 #include "chrome/browser/automation/ui_controls.h" | 37 #include "chrome/browser/automation/ui_controls.h" |
39 #include "chrome/browser/blocked_content_container.h" | 38 #include "chrome/browser/blocked_content_container.h" |
40 #include "chrome/browser/bookmarks/bookmark_model.h" | 39 #include "chrome/browser/bookmarks/bookmark_model.h" |
41 #include "chrome/browser/bookmarks/bookmark_storage.h" | 40 #include "chrome/browser/bookmarks/bookmark_storage.h" |
42 #include "chrome/browser/browser_list.h" | 41 #include "chrome/browser/browser_list.h" |
43 #include "chrome/browser/browser_process.h" | 42 #include "chrome/browser/browser_process.h" |
44 #include "chrome/browser/browser_window.h" | 43 #include "chrome/browser/browser_window.h" |
45 #include "chrome/browser/browsing_data_remover.h" | 44 #include "chrome/browser/browsing_data_remover.h" |
46 #include "chrome/browser/character_encoding.h" | 45 #include "chrome/browser/character_encoding.h" |
47 #include "chrome/browser/content_settings/host_content_settings_map.h" | 46 #include "chrome/browser/content_settings/host_content_settings_map.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 new_tab_ui_load_observer_.reset(new NewTabUILoadObserver(this)); | 124 new_tab_ui_load_observer_.reset(new NewTabUILoadObserver(this)); |
126 metric_event_duration_observer_.reset(new MetricEventDurationObserver()); | 125 metric_event_duration_observer_.reset(new MetricEventDurationObserver()); |
127 extension_test_result_observer_.reset( | 126 extension_test_result_observer_.reset( |
128 new ExtensionTestResultNotificationObserver(this)); | 127 new ExtensionTestResultNotificationObserver(this)); |
129 g_browser_process->AddRefModule(); | 128 g_browser_process->AddRefModule(); |
130 | 129 |
131 TRACE_EVENT_END("AutomationProvider::AutomationProvider", 0, ""); | 130 TRACE_EVENT_END("AutomationProvider::AutomationProvider", 0, ""); |
132 } | 131 } |
133 | 132 |
134 AutomationProvider::~AutomationProvider() { | 133 AutomationProvider::~AutomationProvider() { |
135 STLDeleteContainerPairSecondPointers(port_containers_.begin(), | |
136 port_containers_.end()); | |
137 port_containers_.clear(); | |
138 | |
139 if (channel_.get()) | 134 if (channel_.get()) |
140 channel_->Close(); | 135 channel_->Close(); |
141 | 136 |
142 g_browser_process->ReleaseModule(); | 137 g_browser_process->ReleaseModule(); |
143 } | 138 } |
144 | 139 |
145 bool AutomationProvider::InitializeChannel(const std::string& channel_id) { | 140 bool AutomationProvider::InitializeChannel(const std::string& channel_id) { |
146 TRACE_EVENT_BEGIN("AutomationProvider::InitializeChannel", 0, ""); | 141 TRACE_EVENT_BEGIN("AutomationProvider::InitializeChannel", 0, ""); |
147 | 142 |
148 channel_id_ = channel_id; | 143 channel_id_ = channel_id; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 void AutomationProvider::AddLoginHandler(NavigationController* tab, | 210 void AutomationProvider::AddLoginHandler(NavigationController* tab, |
216 LoginHandler* handler) { | 211 LoginHandler* handler) { |
217 login_handler_map_[tab] = handler; | 212 login_handler_map_[tab] = handler; |
218 } | 213 } |
219 | 214 |
220 void AutomationProvider::RemoveLoginHandler(NavigationController* tab) { | 215 void AutomationProvider::RemoveLoginHandler(NavigationController* tab) { |
221 DCHECK(login_handler_map_[tab]); | 216 DCHECK(login_handler_map_[tab]); |
222 login_handler_map_.erase(tab); | 217 login_handler_map_.erase(tab); |
223 } | 218 } |
224 | 219 |
225 void AutomationProvider::AddPortContainer(ExtensionPortContainer* port) { | |
226 int port_id = port->port_id(); | |
227 DCHECK_NE(-1, port_id); | |
228 DCHECK(port_containers_.find(port_id) == port_containers_.end()); | |
229 | |
230 port_containers_[port_id] = port; | |
231 } | |
232 | |
233 void AutomationProvider::RemovePortContainer(ExtensionPortContainer* port) { | |
234 int port_id = port->port_id(); | |
235 DCHECK_NE(-1, port_id); | |
236 | |
237 PortContainerMap::iterator it = port_containers_.find(port_id); | |
238 DCHECK(it != port_containers_.end()); | |
239 | |
240 if (it != port_containers_.end()) { | |
241 delete it->second; | |
242 port_containers_.erase(it); | |
243 } | |
244 } | |
245 | |
246 ExtensionPortContainer* AutomationProvider::GetPortContainer( | |
247 int port_id) const { | |
248 PortContainerMap::const_iterator it = port_containers_.find(port_id); | |
249 if (it == port_containers_.end()) | |
250 return NULL; | |
251 | |
252 return it->second; | |
253 } | |
254 | |
255 int AutomationProvider::GetIndexForNavigationController( | 220 int AutomationProvider::GetIndexForNavigationController( |
256 const NavigationController* controller, const Browser* parent) const { | 221 const NavigationController* controller, const Browser* parent) const { |
257 DCHECK(parent); | 222 DCHECK(parent); |
258 return parent->GetIndexOfController(controller); | 223 return parent->GetIndexOfController(controller); |
259 } | 224 } |
260 | 225 |
261 int AutomationProvider::AddExtension(const Extension* extension) { | 226 int AutomationProvider::AddExtension(const Extension* extension) { |
262 DCHECK(extension); | 227 DCHECK(extension); |
263 return extension_tracker_->Add(extension); | 228 return extension_tracker_->Add(extension); |
264 } | 229 } |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 IPC_MESSAGE_HANDLER(AutomationMsg_OverrideEncoding, OverrideEncoding) | 317 IPC_MESSAGE_HANDLER(AutomationMsg_OverrideEncoding, OverrideEncoding) |
353 IPC_MESSAGE_HANDLER(AutomationMsg_SelectAll, SelectAll) | 318 IPC_MESSAGE_HANDLER(AutomationMsg_SelectAll, SelectAll) |
354 IPC_MESSAGE_HANDLER(AutomationMsg_Cut, Cut) | 319 IPC_MESSAGE_HANDLER(AutomationMsg_Cut, Cut) |
355 IPC_MESSAGE_HANDLER(AutomationMsg_Copy, Copy) | 320 IPC_MESSAGE_HANDLER(AutomationMsg_Copy, Copy) |
356 IPC_MESSAGE_HANDLER(AutomationMsg_Paste, Paste) | 321 IPC_MESSAGE_HANDLER(AutomationMsg_Paste, Paste) |
357 IPC_MESSAGE_HANDLER(AutomationMsg_ReloadAsync, ReloadAsync) | 322 IPC_MESSAGE_HANDLER(AutomationMsg_ReloadAsync, ReloadAsync) |
358 IPC_MESSAGE_HANDLER(AutomationMsg_StopAsync, StopAsync) | 323 IPC_MESSAGE_HANDLER(AutomationMsg_StopAsync, StopAsync) |
359 IPC_MESSAGE_HANDLER(AutomationMsg_SetPageFontSize, OnSetPageFontSize) | 324 IPC_MESSAGE_HANDLER(AutomationMsg_SetPageFontSize, OnSetPageFontSize) |
360 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_InstallExtension, | 325 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_InstallExtension, |
361 InstallExtension) | 326 InstallExtension) |
362 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_LoadExpandedExtension, | |
363 LoadExpandedExtension) | |
364 IPC_MESSAGE_HANDLER(AutomationMsg_GetEnabledExtensions, | |
365 GetEnabledExtensions) | |
366 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForExtensionTestResult, | 327 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForExtensionTestResult, |
367 WaitForExtensionTestResult) | 328 WaitForExtensionTestResult) |
368 IPC_MESSAGE_HANDLER_DELAY_REPLY( | 329 IPC_MESSAGE_HANDLER_DELAY_REPLY( |
369 AutomationMsg_InstallExtensionAndGetHandle, | 330 AutomationMsg_InstallExtensionAndGetHandle, |
370 InstallExtensionAndGetHandle) | 331 InstallExtensionAndGetHandle) |
371 IPC_MESSAGE_HANDLER(AutomationMsg_UninstallExtension, | 332 IPC_MESSAGE_HANDLER(AutomationMsg_UninstallExtension, |
372 UninstallExtension) | 333 UninstallExtension) |
373 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_EnableExtension, | 334 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_EnableExtension, |
374 EnableExtension) | 335 EnableExtension) |
375 IPC_MESSAGE_HANDLER(AutomationMsg_DisableExtension, | 336 IPC_MESSAGE_HANDLER(AutomationMsg_DisableExtension, |
(...skipping 16 matching lines...) Expand all Loading... |
392 ProcessUnhandledAccelerator) | 353 ProcessUnhandledAccelerator) |
393 IPC_MESSAGE_HANDLER(AutomationMsg_SetInitialFocus, SetInitialFocus) | 354 IPC_MESSAGE_HANDLER(AutomationMsg_SetInitialFocus, SetInitialFocus) |
394 IPC_MESSAGE_HANDLER(AutomationMsg_TabReposition, OnTabReposition) | 355 IPC_MESSAGE_HANDLER(AutomationMsg_TabReposition, OnTabReposition) |
395 IPC_MESSAGE_HANDLER(AutomationMsg_ForwardContextMenuCommandToChrome, | 356 IPC_MESSAGE_HANDLER(AutomationMsg_ForwardContextMenuCommandToChrome, |
396 OnForwardContextMenuCommandToChrome) | 357 OnForwardContextMenuCommandToChrome) |
397 IPC_MESSAGE_HANDLER(AutomationMsg_NavigateInExternalTab, | 358 IPC_MESSAGE_HANDLER(AutomationMsg_NavigateInExternalTab, |
398 NavigateInExternalTab) | 359 NavigateInExternalTab) |
399 IPC_MESSAGE_HANDLER(AutomationMsg_NavigateExternalTabAtIndex, | 360 IPC_MESSAGE_HANDLER(AutomationMsg_NavigateExternalTabAtIndex, |
400 NavigateExternalTabAtIndex) | 361 NavigateExternalTabAtIndex) |
401 IPC_MESSAGE_HANDLER(AutomationMsg_ConnectExternalTab, ConnectExternalTab) | 362 IPC_MESSAGE_HANDLER(AutomationMsg_ConnectExternalTab, ConnectExternalTab) |
402 IPC_MESSAGE_HANDLER(AutomationMsg_SetEnableExtensionAutomation, | |
403 SetEnableExtensionAutomation) | |
404 IPC_MESSAGE_HANDLER(AutomationMsg_HandleMessageFromExternalHost, | 363 IPC_MESSAGE_HANDLER(AutomationMsg_HandleMessageFromExternalHost, |
405 OnMessageFromExternalHost) | 364 OnMessageFromExternalHost) |
406 IPC_MESSAGE_HANDLER(AutomationMsg_BrowserMove, OnBrowserMoved) | 365 IPC_MESSAGE_HANDLER(AutomationMsg_BrowserMove, OnBrowserMoved) |
407 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_RunUnloadHandlers, | 366 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_RunUnloadHandlers, |
408 OnRunUnloadHandlers) | 367 OnRunUnloadHandlers) |
409 IPC_MESSAGE_HANDLER(AutomationMsg_SetZoomLevel, OnSetZoomLevel) | 368 IPC_MESSAGE_HANDLER(AutomationMsg_SetZoomLevel, OnSetZoomLevel) |
410 #endif // defined(OS_WIN) | 369 #endif // defined(OS_WIN) |
411 IPC_MESSAGE_UNHANDLED(handled = false; OnUnhandledMessage()) | 370 IPC_MESSAGE_UNHANDLED(handled = false; OnUnhandledMessage()) |
412 IPC_END_MESSAGE_MAP_EX() | 371 IPC_END_MESSAGE_MAP_EX() |
413 if (!deserialize_success) | 372 if (!deserialize_success) |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 scoped_refptr<CrxInstaller> installer( | 773 scoped_refptr<CrxInstaller> installer( |
815 new CrxInstaller(service, NULL)); // silent install, no UI | 774 new CrxInstaller(service, NULL)); // silent install, no UI |
816 installer->InstallCrx(crx_path); | 775 installer->InstallCrx(crx_path); |
817 } else { | 776 } else { |
818 AutomationMsg_InstallExtension::WriteReplyParams( | 777 AutomationMsg_InstallExtension::WriteReplyParams( |
819 reply_message, AUTOMATION_MSG_EXTENSION_INSTALL_FAILED); | 778 reply_message, AUTOMATION_MSG_EXTENSION_INSTALL_FAILED); |
820 Send(reply_message); | 779 Send(reply_message); |
821 } | 780 } |
822 } | 781 } |
823 | 782 |
824 void AutomationProvider::LoadExpandedExtension( | |
825 const FilePath& extension_dir, | |
826 IPC::Message* reply_message) { | |
827 if (profile_->GetExtensionService()) { | |
828 // The observer will delete itself when done. | |
829 new ExtensionInstallNotificationObserver( | |
830 this, | |
831 AutomationMsg_LoadExpandedExtension::ID, | |
832 reply_message); | |
833 | |
834 profile_->GetExtensionService()->LoadExtension(extension_dir); | |
835 } else { | |
836 AutomationMsg_LoadExpandedExtension::WriteReplyParams( | |
837 reply_message, AUTOMATION_MSG_EXTENSION_INSTALL_FAILED); | |
838 Send(reply_message); | |
839 } | |
840 } | |
841 | |
842 void AutomationProvider::GetEnabledExtensions( | |
843 std::vector<FilePath>* result) { | |
844 ExtensionService* service = profile_->GetExtensionService(); | |
845 DCHECK(service); | |
846 if (service->extensions_enabled()) { | |
847 const ExtensionList* extensions = service->extensions(); | |
848 DCHECK(extensions); | |
849 for (size_t i = 0; i < extensions->size(); ++i) { | |
850 const Extension* extension = (*extensions)[i]; | |
851 DCHECK(extension); | |
852 // AutomationProvider only exposes non app internal/loaded extensions. | |
853 if (!extension->is_app() && | |
854 (extension->location() == Extension::INTERNAL || | |
855 extension->location() == Extension::LOAD)) { | |
856 result->push_back(extension->path()); | |
857 } | |
858 } | |
859 } | |
860 } | |
861 | |
862 void AutomationProvider::WaitForExtensionTestResult( | 783 void AutomationProvider::WaitForExtensionTestResult( |
863 IPC::Message* reply_message) { | 784 IPC::Message* reply_message) { |
864 DCHECK(!reply_message_); | 785 DCHECK(!reply_message_); |
865 reply_message_ = reply_message; | 786 reply_message_ = reply_message; |
866 // Call MaybeSendResult, because the result might have come in before | 787 // Call MaybeSendResult, because the result might have come in before |
867 // we were waiting on it. | 788 // we were waiting on it. |
868 extension_test_result_observer_->MaybeSendResult(); | 789 extension_test_result_observer_->MaybeSendResult(); |
869 } | 790 } |
870 | 791 |
871 void AutomationProvider::InstallExtensionAndGetHandle( | 792 void AutomationProvider::InstallExtensionAndGetHandle( |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1033 } | 954 } |
1034 } | 955 } |
1035 } | 956 } |
1036 | 957 |
1037 void AutomationProvider::SaveAsAsync(int tab_handle) { | 958 void AutomationProvider::SaveAsAsync(int tab_handle) { |
1038 NavigationController* tab = NULL; | 959 NavigationController* tab = NULL; |
1039 TabContents* tab_contents = GetTabContentsForHandle(tab_handle, &tab); | 960 TabContents* tab_contents = GetTabContentsForHandle(tab_handle, &tab); |
1040 if (tab_contents) | 961 if (tab_contents) |
1041 tab_contents->OnSavePage(); | 962 tab_contents->OnSavePage(); |
1042 } | 963 } |
OLD | NEW |