| OLD | NEW |
| 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 #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 "app/message_box_flags.h" | 9 #include "app/message_box_flags.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 2081 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2092 if (title.length()) | 2092 if (title.length()) |
| 2093 hs->SetPageTitle(gurl, title); | 2093 hs->SetPageTitle(gurl, title); |
| 2094 reply.SendSuccess(NULL); | 2094 reply.SendSuccess(NULL); |
| 2095 } | 2095 } |
| 2096 | 2096 |
| 2097 // Sample json input: { "command": "GetDownloadsInfo" } | 2097 // Sample json input: { "command": "GetDownloadsInfo" } |
| 2098 // Refer chrome/test/pyautolib/download_info.py for sample json output. | 2098 // Refer chrome/test/pyautolib/download_info.py for sample json output. |
| 2099 void AutomationProvider::GetDownloadsInfo(Browser* browser, | 2099 void AutomationProvider::GetDownloadsInfo(Browser* browser, |
| 2100 DictionaryValue* args, | 2100 DictionaryValue* args, |
| 2101 IPC::Message* reply_message) { | 2101 IPC::Message* reply_message) { |
| 2102 AutomationProviderDownloadManagerObserver observer; | |
| 2103 std::vector<DownloadItem*> downloads; | |
| 2104 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); | 2102 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); |
| 2105 AutomationJSONReply reply(this, reply_message); | 2103 AutomationJSONReply reply(this, reply_message); |
| 2106 | 2104 |
| 2107 if (!profile_->HasCreatedDownloadManager()) { | 2105 if (!profile_->HasCreatedDownloadManager()) { |
| 2108 reply.SendError("no download manager"); | 2106 reply.SendError("no download manager"); |
| 2109 return; | 2107 return; |
| 2110 } | 2108 } |
| 2111 // Use DownloadManager's GetDownloads() method and not GetCurrentDownloads() | 2109 |
| 2112 // since that would be transient; a download might enter and empty out | 2110 std::vector<DownloadItem*> downloads; |
| 2113 // the current download queue too soon to be noticed. | 2111 profile_->GetDownloadManager()->GetAllDownloads(FilePath(), &downloads); |
| 2114 profile_->GetDownloadManager()->GetDownloads(&observer, L""); | |
| 2115 downloads = observer.Downloads(); | |
| 2116 | 2112 |
| 2117 std::map<DownloadItem::DownloadState, std::string> state_to_string; | 2113 std::map<DownloadItem::DownloadState, std::string> state_to_string; |
| 2118 state_to_string[DownloadItem::IN_PROGRESS] = std::string("IN_PROGRESS"); | 2114 state_to_string[DownloadItem::IN_PROGRESS] = std::string("IN_PROGRESS"); |
| 2119 state_to_string[DownloadItem::CANCELLED] = std::string("CANCELLED"); | 2115 state_to_string[DownloadItem::CANCELLED] = std::string("CANCELLED"); |
| 2120 state_to_string[DownloadItem::REMOVING] = std::string("REMOVING"); | 2116 state_to_string[DownloadItem::REMOVING] = std::string("REMOVING"); |
| 2121 state_to_string[DownloadItem::COMPLETE] = std::string("COMPLETE"); | 2117 state_to_string[DownloadItem::COMPLETE] = std::string("COMPLETE"); |
| 2122 | 2118 |
| 2123 std::map<DownloadItem::SafetyState, std::string> safety_state_to_string; | 2119 std::map<DownloadItem::SafetyState, std::string> safety_state_to_string; |
| 2124 safety_state_to_string[DownloadItem::SAFE] = std::string("SAFE"); | 2120 safety_state_to_string[DownloadItem::SAFE] = std::string("SAFE"); |
| 2125 safety_state_to_string[DownloadItem::DANGEROUS] = std::string("DANGEROUS"); | 2121 safety_state_to_string[DownloadItem::DANGEROUS] = std::string("DANGEROUS"); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2153 | 2149 |
| 2154 reply.SendSuccess(return_value.get()); | 2150 reply.SendSuccess(return_value.get()); |
| 2155 // All value objects allocated above are owned by |return_value| | 2151 // All value objects allocated above are owned by |return_value| |
| 2156 // and get freed by it. | 2152 // and get freed by it. |
| 2157 } | 2153 } |
| 2158 | 2154 |
| 2159 void AutomationProvider::WaitForDownloadsToComplete( | 2155 void AutomationProvider::WaitForDownloadsToComplete( |
| 2160 Browser* browser, | 2156 Browser* browser, |
| 2161 DictionaryValue* args, | 2157 DictionaryValue* args, |
| 2162 IPC::Message* reply_message) { | 2158 IPC::Message* reply_message) { |
| 2163 AutomationProviderDownloadManagerObserver observer; | |
| 2164 std::vector<DownloadItem*> downloads; | |
| 2165 AutomationJSONReply reply(this, reply_message); | 2159 AutomationJSONReply reply(this, reply_message); |
| 2166 | 2160 |
| 2167 // Look for a quick return. | 2161 // Look for a quick return. |
| 2168 if (!profile_->HasCreatedDownloadManager()) { | 2162 if (!profile_->HasCreatedDownloadManager()) { |
| 2169 reply.SendSuccess(NULL); // No download manager. | 2163 reply.SendSuccess(NULL); // No download manager. |
| 2170 return; | 2164 return; |
| 2171 } | 2165 } |
| 2172 profile_->GetDownloadManager()->GetCurrentDownloads(&observer, FilePath()); | 2166 std::vector<DownloadItem*> downloads; |
| 2173 downloads = observer.Downloads(); | 2167 profile_->GetDownloadManager()->GetCurrentDownloads(FilePath(), &downloads); |
| 2174 if (downloads.size() == 0) { | 2168 if (downloads.empty()) { |
| 2175 reply.SendSuccess(NULL); | 2169 reply.SendSuccess(NULL); |
| 2176 return; | 2170 return; |
| 2177 } | 2171 } |
| 2178 | 2172 |
| 2179 // The observer owns itself. When the last observed item pings, it | 2173 // The observer owns itself. When the last observed item pings, it |
| 2180 // deletes itself. | 2174 // deletes itself. |
| 2181 AutomationProviderDownloadItemObserver* item_observer = | 2175 AutomationProviderDownloadItemObserver* item_observer = |
| 2182 new AutomationProviderDownloadItemObserver( | 2176 new AutomationProviderDownloadItemObserver( |
| 2183 this, reply_message, downloads.size()); | 2177 this, reply_message, downloads.size()); |
| 2184 for (std::vector<DownloadItem*>::iterator i = downloads.begin(); | 2178 for (std::vector<DownloadItem*>::iterator i = downloads.begin(); |
| (...skipping 2210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4395 } | 4389 } |
| 4396 | 4390 |
| 4397 void AutomationProvider::WaitForPopupMenuToOpen(IPC::Message* reply_message) { | 4391 void AutomationProvider::WaitForPopupMenuToOpen(IPC::Message* reply_message) { |
| 4398 NOTIMPLEMENTED(); | 4392 NOTIMPLEMENTED(); |
| 4399 } | 4393 } |
| 4400 #endif // !defined(TOOLKIT_VIEWS) | 4394 #endif // !defined(TOOLKIT_VIEWS) |
| 4401 | 4395 |
| 4402 void AutomationProvider::ResetToDefaultTheme() { | 4396 void AutomationProvider::ResetToDefaultTheme() { |
| 4403 profile_->ClearTheme(); | 4397 profile_->ClearTheme(); |
| 4404 } | 4398 } |
| OLD | NEW |