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/testing_automation_provider.h" | 5 #include "chrome/browser/automation/testing_automation_provider.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 #include "chrome/browser/download/download_shelf.h" | 148 #include "chrome/browser/download/download_shelf.h" |
149 #endif | 149 #endif |
150 | 150 |
151 using automation::Error; | 151 using automation::Error; |
152 using automation::ErrorCode; | 152 using automation::ErrorCode; |
153 using automation_util::SendErrorIfModalDialogActive; | 153 using automation_util::SendErrorIfModalDialogActive; |
154 using content::BrowserThread; | 154 using content::BrowserThread; |
155 using content::ChildProcessHost; | 155 using content::ChildProcessHost; |
156 using content::DownloadItem; | 156 using content::DownloadItem; |
157 using content::DownloadManager; | 157 using content::DownloadManager; |
| 158 using content::NavigationEntry; |
158 using content::PluginService; | 159 using content::PluginService; |
159 using content::OpenURLParams; | 160 using content::OpenURLParams; |
160 using content::Referrer; | 161 using content::Referrer; |
161 using content::SSLStatus; | 162 using content::SSLStatus; |
162 using content::WebContents; | 163 using content::WebContents; |
163 | 164 |
164 namespace { | 165 namespace { |
165 | 166 |
166 void SendMouseClick(int flags) { | 167 void SendMouseClick(int flags) { |
167 ui_controls::MouseButton button = ui_controls::LEFT; | 168 ui_controls::MouseButton button = ui_controls::LEFT; |
(...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1277 *process_id = base::GetProcId(rph->GetHandle()); | 1278 *process_id = base::GetProcId(rph->GetHandle()); |
1278 } | 1279 } |
1279 } | 1280 } |
1280 | 1281 |
1281 void TestingAutomationProvider::GetTabTitle(int handle, | 1282 void TestingAutomationProvider::GetTabTitle(int handle, |
1282 int* title_string_size, | 1283 int* title_string_size, |
1283 std::wstring* title) { | 1284 std::wstring* title) { |
1284 *title_string_size = -1; // -1 is the error code | 1285 *title_string_size = -1; // -1 is the error code |
1285 if (tab_tracker_->ContainsHandle(handle)) { | 1286 if (tab_tracker_->ContainsHandle(handle)) { |
1286 NavigationController* tab = tab_tracker_->GetResource(handle); | 1287 NavigationController* tab = tab_tracker_->GetResource(handle); |
1287 content::NavigationEntry* entry = tab->GetActiveEntry(); | 1288 NavigationEntry* entry = tab->GetActiveEntry(); |
1288 if (entry != NULL) { | 1289 if (entry != NULL) { |
1289 *title = UTF16ToWideHack(entry->GetTitleForDisplay("")); | 1290 *title = UTF16ToWideHack(entry->GetTitleForDisplay("")); |
1290 } else { | 1291 } else { |
1291 *title = std::wstring(); | 1292 *title = std::wstring(); |
1292 } | 1293 } |
1293 *title_string_size = static_cast<int>(title->size()); | 1294 *title_string_size = static_cast<int>(title->size()); |
1294 } | 1295 } |
1295 } | 1296 } |
1296 | 1297 |
1297 void TestingAutomationProvider::GetTabIndex(int handle, int* tabstrip_index) { | 1298 void TestingAutomationProvider::GetTabIndex(int handle, int* tabstrip_index) { |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1566 } | 1567 } |
1567 | 1568 |
1568 void TestingAutomationProvider::GetSecurityState( | 1569 void TestingAutomationProvider::GetSecurityState( |
1569 int handle, | 1570 int handle, |
1570 bool* success, | 1571 bool* success, |
1571 content::SecurityStyle* security_style, | 1572 content::SecurityStyle* security_style, |
1572 net::CertStatus* ssl_cert_status, | 1573 net::CertStatus* ssl_cert_status, |
1573 int* insecure_content_status) { | 1574 int* insecure_content_status) { |
1574 if (tab_tracker_->ContainsHandle(handle)) { | 1575 if (tab_tracker_->ContainsHandle(handle)) { |
1575 NavigationController* tab = tab_tracker_->GetResource(handle); | 1576 NavigationController* tab = tab_tracker_->GetResource(handle); |
1576 content::NavigationEntry* entry = tab->GetActiveEntry(); | 1577 NavigationEntry* entry = tab->GetActiveEntry(); |
1577 *success = true; | 1578 *success = true; |
1578 *security_style = entry->GetSSL().security_style; | 1579 *security_style = entry->GetSSL().security_style; |
1579 *ssl_cert_status = entry->GetSSL().cert_status; | 1580 *ssl_cert_status = entry->GetSSL().cert_status; |
1580 *insecure_content_status = entry->GetSSL().content_status; | 1581 *insecure_content_status = entry->GetSSL().content_status; |
1581 } else { | 1582 } else { |
1582 *success = false; | 1583 *success = false; |
1583 *security_style = content::SECURITY_STYLE_UNKNOWN; | 1584 *security_style = content::SECURITY_STYLE_UNKNOWN; |
1584 *ssl_cert_status = 0; | 1585 *ssl_cert_status = 0; |
1585 *insecure_content_status = 0; | 1586 *insecure_content_status = 0; |
1586 } | 1587 } |
1587 } | 1588 } |
1588 | 1589 |
1589 void TestingAutomationProvider::GetPageType( | 1590 void TestingAutomationProvider::GetPageType( |
1590 int handle, | 1591 int handle, |
1591 bool* success, | 1592 bool* success, |
1592 content::PageType* page_type) { | 1593 content::PageType* page_type) { |
1593 if (tab_tracker_->ContainsHandle(handle)) { | 1594 if (tab_tracker_->ContainsHandle(handle)) { |
1594 NavigationController* tab = tab_tracker_->GetResource(handle); | 1595 NavigationController* tab = tab_tracker_->GetResource(handle); |
1595 content::NavigationEntry* entry = tab->GetActiveEntry(); | 1596 NavigationEntry* entry = tab->GetActiveEntry(); |
1596 *page_type = entry->GetPageType(); | 1597 *page_type = entry->GetPageType(); |
1597 *success = true; | 1598 *success = true; |
1598 // In order to return the proper result when an interstitial is shown and | 1599 // In order to return the proper result when an interstitial is shown and |
1599 // no navigation entry were created for it we need to ask the TabContents. | 1600 // no navigation entry were created for it we need to ask the TabContents. |
1600 if (*page_type == content::PAGE_TYPE_NORMAL && | 1601 if (*page_type == content::PAGE_TYPE_NORMAL && |
1601 tab->tab_contents()->ShowingInterstitialPage()) | 1602 tab->tab_contents()->ShowingInterstitialPage()) |
1602 *page_type = content::PAGE_TYPE_INTERSTITIAL; | 1603 *page_type = content::PAGE_TYPE_INTERSTITIAL; |
1603 } else { | 1604 } else { |
1604 *success = false; | 1605 *success = false; |
1605 *page_type = content::PAGE_TYPE_NORMAL; | 1606 *page_type = content::PAGE_TYPE_NORMAL; |
1606 } | 1607 } |
1607 } | 1608 } |
1608 | 1609 |
1609 void TestingAutomationProvider::GetMetricEventDuration( | 1610 void TestingAutomationProvider::GetMetricEventDuration( |
1610 const std::string& event_name, | 1611 const std::string& event_name, |
1611 int* duration_ms) { | 1612 int* duration_ms) { |
1612 *duration_ms = metric_event_duration_observer_->GetEventDurationMs( | 1613 *duration_ms = metric_event_duration_observer_->GetEventDurationMs( |
1613 event_name); | 1614 event_name); |
1614 } | 1615 } |
1615 | 1616 |
1616 void TestingAutomationProvider::ActionOnSSLBlockingPage( | 1617 void TestingAutomationProvider::ActionOnSSLBlockingPage( |
1617 int handle, | 1618 int handle, |
1618 bool proceed, | 1619 bool proceed, |
1619 IPC::Message* reply_message) { | 1620 IPC::Message* reply_message) { |
1620 if (tab_tracker_->ContainsHandle(handle)) { | 1621 if (tab_tracker_->ContainsHandle(handle)) { |
1621 NavigationController* tab = tab_tracker_->GetResource(handle); | 1622 NavigationController* tab = tab_tracker_->GetResource(handle); |
1622 content::NavigationEntry* entry = tab->GetActiveEntry(); | 1623 NavigationEntry* entry = tab->GetActiveEntry(); |
1623 if (entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { | 1624 if (entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { |
1624 TabContents* tab_contents = tab->tab_contents(); | 1625 TabContents* tab_contents = tab->tab_contents(); |
1625 InterstitialPage* ssl_blocking_page = | 1626 InterstitialPage* ssl_blocking_page = |
1626 InterstitialPage::GetInterstitialPage(tab_contents); | 1627 InterstitialPage::GetInterstitialPage(tab_contents); |
1627 if (ssl_blocking_page) { | 1628 if (ssl_blocking_page) { |
1628 if (proceed) { | 1629 if (proceed) { |
1629 new NavigationNotificationObserver(tab, this, reply_message, 1, | 1630 new NavigationNotificationObserver(tab, this, reply_message, 1, |
1630 false, false); | 1631 false, false); |
1631 ssl_blocking_page->Proceed(); | 1632 ssl_blocking_page->Proceed(); |
1632 return; | 1633 return; |
(...skipping 1332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2965 AutomationJSONReply reply(this, reply_message); | 2966 AutomationJSONReply reply(this, reply_message); |
2966 int tab_index; | 2967 int tab_index; |
2967 TabContents* tab_contents = NULL; | 2968 TabContents* tab_contents = NULL; |
2968 if (!args->GetInteger("tab_index", &tab_index) || | 2969 if (!args->GetInteger("tab_index", &tab_index) || |
2969 !(tab_contents = browser->GetTabContentsAt(tab_index))) { | 2970 !(tab_contents = browser->GetTabContentsAt(tab_index))) { |
2970 reply.SendError("tab_index missing or invalid."); | 2971 reply.SendError("tab_index missing or invalid."); |
2971 return; | 2972 return; |
2972 } | 2973 } |
2973 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); | 2974 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); |
2974 const NavigationController& controller = tab_contents->GetController(); | 2975 const NavigationController& controller = tab_contents->GetController(); |
2975 content::NavigationEntry* nav_entry = controller.GetActiveEntry(); | 2976 NavigationEntry* nav_entry = controller.GetActiveEntry(); |
2976 DCHECK(nav_entry); | 2977 DCHECK(nav_entry); |
2977 | 2978 |
2978 // Security info. | 2979 // Security info. |
2979 DictionaryValue* ssl = new DictionaryValue; | 2980 DictionaryValue* ssl = new DictionaryValue; |
2980 std::map<content::SecurityStyle, std::string> style_to_string; | 2981 std::map<content::SecurityStyle, std::string> style_to_string; |
2981 style_to_string[content::SECURITY_STYLE_UNKNOWN] = "SECURITY_STYLE_UNKNOWN"; | 2982 style_to_string[content::SECURITY_STYLE_UNKNOWN] = "SECURITY_STYLE_UNKNOWN"; |
2982 style_to_string[content::SECURITY_STYLE_UNAUTHENTICATED] = | 2983 style_to_string[content::SECURITY_STYLE_UNAUTHENTICATED] = |
2983 "SECURITY_STYLE_UNAUTHENTICATED"; | 2984 "SECURITY_STYLE_UNAUTHENTICATED"; |
2984 style_to_string[content::SECURITY_STYLE_AUTHENTICATION_BROKEN] = | 2985 style_to_string[content::SECURITY_STYLE_AUTHENTICATION_BROKEN] = |
2985 "SECURITY_STYLE_AUTHENTICATION_BROKEN"; | 2986 "SECURITY_STYLE_AUTHENTICATION_BROKEN"; |
(...skipping 3697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6683 | 6684 |
6684 Send(reply_message_); | 6685 Send(reply_message_); |
6685 redirect_query_ = 0; | 6686 redirect_query_ = 0; |
6686 reply_message_ = NULL; | 6687 reply_message_ = NULL; |
6687 } | 6688 } |
6688 | 6689 |
6689 void TestingAutomationProvider::OnRemoveProvider() { | 6690 void TestingAutomationProvider::OnRemoveProvider() { |
6690 if (g_browser_process) | 6691 if (g_browser_process) |
6691 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); | 6692 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); |
6692 } | 6693 } |
OLD | NEW |