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

Side by Side Diff: chrome/browser/extensions/api/downloads/downloads_api_unittest.cc

Issue 11574006: Implement chrome.downloads.onDeterminingFilename() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: @r177662 Created 7 years, 11 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
OLDNEW
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 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/stl_util.h" 11 #include "base/stl_util.h"
12 #include "base/stringprintf.h" 12 #include "base/stringprintf.h"
13 #include "chrome/browser/download/download_file_icon_extractor.h" 13 #include "chrome/browser/download/download_file_icon_extractor.h"
14 #include "chrome/browser/download/download_service.h" 14 #include "chrome/browser/download/download_service.h"
15 #include "chrome/browser/download/download_service_factory.h" 15 #include "chrome/browser/download/download_service_factory.h"
16 #include "chrome/browser/download/download_test_file_chooser_observer.h" 16 #include "chrome/browser/download/download_test_file_chooser_observer.h"
17 #include "chrome/browser/extensions/api/downloads/downloads_api.h" 17 #include "chrome/browser/extensions/api/downloads/downloads_api.h"
18 #include "chrome/browser/extensions/event_names.h" 18 #include "chrome/browser/extensions/event_names.h"
19 #include "chrome/browser/extensions/extension_apitest.h" 19 #include "chrome/browser/extensions/extension_apitest.h"
20 #include "chrome/browser/extensions/extension_function_test_utils.h" 20 #include "chrome/browser/extensions/extension_function_test_utils.h"
21 #include "chrome/browser/extensions/extension_service.h"
21 #include "chrome/browser/history/download_row.h" 22 #include "chrome/browser/history/download_row.h"
22 #include "chrome/browser/net/url_request_mock_util.h" 23 #include "chrome/browser/net/url_request_mock_util.h"
23 #include "chrome/browser/prefs/pref_service.h" 24 #include "chrome/browser/prefs/pref_service.h"
24 #include "chrome/browser/profiles/profile.h" 25 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/ui/browser.h" 26 #include "chrome/browser/ui/browser.h"
26 #include "chrome/browser/ui/browser_tabstrip.h" 27 #include "chrome/browser/ui/browser_tabstrip.h"
27 #include "chrome/common/chrome_notification_types.h" 28 #include "chrome/common/chrome_notification_types.h"
28 #include "chrome/common/pref_names.h" 29 #include "chrome/common/pref_names.h"
29 #include "chrome/test/base/in_process_browser_test.h" 30 #include "chrome/test/base/in_process_browser_test.h"
30 #include "chrome/test/base/ui_test_utils.h" 31 #include "chrome/test/base/ui_test_utils.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 args_(base::JSONReader::Read(json_args)), 97 args_(base::JSONReader::Read(json_args)),
97 caught_(caught) { 98 caught_(caught) {
98 } 99 }
99 100
100 const base::Time& caught() { return caught_; } 101 const base::Time& caught() { return caught_; }
101 102
102 bool Equals(const Event& other) { 103 bool Equals(const Event& other) {
103 if ((profile_ != other.profile_) || 104 if ((profile_ != other.profile_) ||
104 (event_name_ != other.event_name_)) 105 (event_name_ != other.event_name_))
105 return false; 106 return false;
106 if ((event_name_ == events::kOnDownloadCreated || 107 if (((event_name_ == events::kOnDownloadCreated) ||
107 event_name_ == events::kOnDownloadChanged) && 108 (event_name_.substr(
109 0, strlen(events::kOnDownloadDeterminingFilename)) ==
110 events::kOnDownloadDeterminingFilename) ||
111 (event_name_ == events::kOnDownloadChanged)) &&
108 args_.get() && 112 args_.get() &&
109 other.args_.get()) { 113 other.args_.get()) {
110 base::ListValue* left_list = NULL; 114 base::ListValue* left_list = NULL;
111 base::DictionaryValue* left_dict = NULL; 115 base::DictionaryValue* left_dict = NULL;
112 base::ListValue* right_list = NULL; 116 base::ListValue* right_list = NULL;
113 base::DictionaryValue* right_dict = NULL; 117 base::DictionaryValue* right_dict = NULL;
114 if (!args_->GetAsList(&left_list) || 118 if (!args_->GetAsList(&left_list) ||
115 !other.args_->GetAsList(&right_list) || 119 !other.args_->GetAsList(&right_list) ||
116 !left_list->GetDictionary(0, &left_dict) || 120 !left_list->GetDictionary(0, &left_dict) ||
117 !right_list->GetDictionary(0, &right_dict)) 121 !right_list->GetDictionary(0, &right_dict))
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 const content::NotificationDetails& details) { 166 const content::NotificationDetails& details) {
163 switch (type) { 167 switch (type) {
164 case chrome::NOTIFICATION_EXTENSION_DOWNLOADS_EVENT: 168 case chrome::NOTIFICATION_EXTENSION_DOWNLOADS_EVENT:
165 { 169 {
166 DownloadsNotificationSource* dns = 170 DownloadsNotificationSource* dns =
167 content::Source<DownloadsNotificationSource>(source).ptr(); 171 content::Source<DownloadsNotificationSource>(source).ptr();
168 Event* new_event = new Event( 172 Event* new_event = new Event(
169 dns->profile, 173 dns->profile,
170 dns->event_name, 174 dns->event_name,
171 *content::Details<std::string>(details).ptr(), base::Time::Now()); 175 *content::Details<std::string>(details).ptr(), base::Time::Now());
176 LOG(INFO) << "occam caught " << new_event->Debug();
172 events_.push_back(new_event); 177 events_.push_back(new_event);
173 if (waiting_ && 178 if (waiting_ &&
174 waiting_for_.get() && 179 waiting_for_.get() &&
175 waiting_for_->Equals(*new_event)) { 180 waiting_for_->Equals(*new_event)) {
176 waiting_ = false; 181 waiting_ = false;
177 MessageLoopForUI::current()->Quit(); 182 MessageLoopForUI::current()->Quit();
178 } 183 }
179 break; 184 break;
180 } 185 }
181 default: 186 default:
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 " \"state\": {" 310 " \"state\": {"
306 " \"previous\": \"in_progress\"," 311 " \"previous\": \"in_progress\","
307 " \"current\": \"interrupted\"}}]", 312 " \"current\": \"interrupted\"}}]",
308 item->GetId(), 313 item->GetId(),
309 expected_error)); 314 expected_error));
310 } 315 }
311 316
312 std::string GetExtensionURL() { 317 std::string GetExtensionURL() {
313 return extension_->url().spec(); 318 return extension_->url().spec();
314 } 319 }
320 std::string GetExtensionId() {
321 return extension_->id();
322 }
323 void DisableExtension() {
324 browser()->profile()->GetExtensionService()->DisableExtension(
325 GetExtensionId(), extensions::Extension::DISABLE_USER_ACTION);
326 }
327 void EnableExtension() {
328 browser()->profile()->GetExtensionService()->EnableExtension(
329 GetExtensionId());
330 }
315 331
316 std::string GetFilename(const char* path) { 332 std::string GetFilename(const char* path) {
317 std::string result = 333 std::string result =
318 downloads_directory_.path().AppendASCII(path).AsUTF8Unsafe(); 334 downloads_directory_.path().AppendASCII(path).AsUTF8Unsafe();
319 #if defined(OS_WIN) 335 #if defined(OS_WIN)
320 for (std::string::size_type next = result.find("\\"); 336 for (std::string::size_type next = result.find("\\");
321 next != std::string::npos; 337 next != std::string::npos;
322 next = result.find("\\", next)) { 338 next = result.find("\\", next)) {
323 result.replace(next, 1, "\\\\"); 339 result.replace(next, 1, "\\\\");
324 next += 2; 340 next += 2;
(...skipping 1377 matching lines...) Expand 10 before | Expand all | Expand 10 after
1702 " \"current\": \"complete\"}}]", 1718 " \"current\": \"complete\"}}]",
1703 result_id, 1719 result_id,
1704 GetFilename("slow.txt.crdownload").c_str(), 1720 GetFilename("slow.txt.crdownload").c_str(),
1705 GetFilename("slow.txt").c_str()))); 1721 GetFilename("slow.txt").c_str())));
1706 } 1722 }
1707 1723
1708 // Valid data URLs are valid URLs. 1724 // Valid data URLs are valid URLs.
1709 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, 1725 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
1710 DownloadExtensionTest_Download_DataURL) { 1726 DownloadExtensionTest_Download_DataURL) {
1711 LoadExtension("downloads_split"); 1727 LoadExtension("downloads_split");
1712 CHECK(StartTestServer());
1713 std::string download_url = "data:text/plain,hello"; 1728 std::string download_url = "data:text/plain,hello";
1714 GoOnTheRecord(); 1729 GoOnTheRecord();
1715 1730
1716 scoped_ptr<base::Value> result(RunFunctionAndReturnResult( 1731 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
1717 new DownloadsDownloadFunction(), base::StringPrintf( 1732 new DownloadsDownloadFunction(), base::StringPrintf(
1718 "[{\"url\": \"%s\"," 1733 "[{\"url\": \"%s\","
1719 " \"filename\": \"data.txt\"}]", download_url.c_str()))); 1734 " \"filename\": \"data.txt\"}]", download_url.c_str())));
1720 ASSERT_TRUE(result.get()); 1735 ASSERT_TRUE(result.get());
1721 int result_id = -1; 1736 int result_id = -1;
1722 ASSERT_TRUE(result->GetAsInteger(&result_id)); 1737 ASSERT_TRUE(result->GetAsInteger(&result_id));
(...skipping 19 matching lines...) Expand all
1742 " \"current\": \"complete\"}}]", 1757 " \"current\": \"complete\"}}]",
1743 result_id, 1758 result_id,
1744 GetFilename("data.txt.crdownload").c_str(), 1759 GetFilename("data.txt.crdownload").c_str(),
1745 GetFilename("data.txt").c_str()))); 1760 GetFilename("data.txt").c_str())));
1746 } 1761 }
1747 1762
1748 // Valid file URLs are valid URLs. 1763 // Valid file URLs are valid URLs.
1749 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, 1764 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
1750 DownloadExtensionTest_Download_File) { 1765 DownloadExtensionTest_Download_File) {
1751 GoOnTheRecord(); 1766 GoOnTheRecord();
1752 CHECK(StartTestServer());
1753 LoadExtension("downloads_split"); 1767 LoadExtension("downloads_split");
1754 std::string download_url = "file:///"; 1768 std::string download_url = "file:///";
1755 #if defined(OS_WIN) 1769 #if defined(OS_WIN)
1756 download_url += "C:/"; 1770 download_url += "C:/";
1757 #endif 1771 #endif
1758 1772
1759 scoped_ptr<base::Value> result(RunFunctionAndReturnResult( 1773 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
1760 new DownloadsDownloadFunction(), base::StringPrintf( 1774 new DownloadsDownloadFunction(), base::StringPrintf(
1761 "[{\"url\": \"%s\"," 1775 "[{\"url\": \"%s\","
1762 " \"filename\": \"file.txt\"}]", download_url.c_str()))); 1776 " \"filename\": \"file.txt\"}]", download_url.c_str())));
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
2149 " \"state\": {" 2163 " \"state\": {"
2150 " \"previous\": \"in_progress\"," 2164 " \"previous\": \"in_progress\","
2151 " \"current\": \"complete\"}}]", 2165 " \"current\": \"complete\"}}]",
2152 result_id, 2166 result_id,
2153 GetFilename("on_record.txt.crdownload").c_str(), 2167 GetFilename("on_record.txt.crdownload").c_str(),
2154 GetFilename("on_record.txt").c_str()))); 2168 GetFilename("on_record.txt").c_str())));
2155 std::string disk_data; 2169 std::string disk_data;
2156 EXPECT_TRUE(file_util::ReadFileToString(item->GetFullPath(), &disk_data)); 2170 EXPECT_TRUE(file_util::ReadFileToString(item->GetFullPath(), &disk_data));
2157 EXPECT_STREQ(kPayloadData, disk_data.c_str()); 2171 EXPECT_STREQ(kPayloadData, disk_data.c_str());
2158 } 2172 }
2173
2174 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
Randy Smith (Not in Mondays) 2013/01/22 19:43:08 Could you put in some line breaks in the following
benjhayden 2013/01/23 21:30:10 Done.
2175 DownloadExtensionTest_OnDeterminingFilename_NoChange) {
2176 GoOnTheRecord();
2177 LoadExtension("downloads_split");
2178 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2179 browser()->profile(),
2180 GetExtensionId(),
2181 "42"));
2182 CHECK(StartTestServer());
2183 std::string download_url = test_server()->GetURL("slow?0").spec();
2184 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2185 new DownloadsDownloadFunction(), base::StringPrintf(
2186 "[{\"url\": \"%s\"}]", download_url.c_str())));
2187 ASSERT_TRUE(result.get());
2188 int result_id = -1;
2189 ASSERT_TRUE(result->GetAsInteger(&result_id));
2190 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2191 ASSERT_TRUE(item);
2192 ScopedCancellingItem canceller(item);
2193 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2194 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2195 base::StringPrintf("[{\"danger\": \"safe\","
2196 " \"incognito\": false,"
2197 " \"id\": %d,"
2198 " \"mime\": \"text/plain\","
2199 " \"paused\": false,"
2200 " \"url\": \"%s\"}]",
2201 result_id,
2202 download_url.c_str())));
2203 ASSERT_TRUE(WaitFor(
2204 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2205 base::StringPrintf("[{\"id\": %d,"
2206 " \"filename\":\"slow.txt\"}]",
2207 result_id)));
2208 ASSERT_TRUE(item->GetTargetFilePath().empty());
2209 ASSERT_TRUE(item->IsInProgress());
2210 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2211 browser()->profile(),
2212 false,
2213 GetExtensionId(),
2214 "42",
2215 result_id,
2216 FilePath(),
2217 false));
2218 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2219 base::StringPrintf("[{\"id\": %d,"
2220 " \"filename\": {"
2221 " \"previous\": \"%s\","
2222 " \"current\": \"%s\"},"
2223 " \"state\": {"
2224 " \"previous\": \"in_progress\","
2225 " \"current\": \"complete\"}}]",
2226 result_id,
2227 GetFilename("slow.txt.crdownload").c_str(),
2228 GetFilename("slow.txt").c_str())));
2229 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2230 base::StringPrintf("[{\"id\": %d,"
2231 " \"state\": {"
2232 " \"previous\": \"in_progress\","
2233 " \"current\": \"complete\"}}]",
2234 result_id)));
2235 }
2236
2237 IN_PROC_BROWSER_TEST_F(
2238 DownloadExtensionTest,
2239 DownloadExtensionTest_OnDeterminingFilename_DangerousOverride) {
2240 GoOnTheRecord();
2241 LoadExtension("downloads_split");
2242 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2243 browser()->profile(),
2244 GetExtensionId(),
2245 "42"));
2246 CHECK(StartTestServer());
2247 std::string download_url = test_server()->GetURL("slow?0").spec();
2248 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2249 new DownloadsDownloadFunction(), base::StringPrintf(
2250 "[{\"url\": \"%s\"}]", download_url.c_str())));
2251 ASSERT_TRUE(result.get());
2252 int result_id = -1;
2253 ASSERT_TRUE(result->GetAsInteger(&result_id));
2254 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2255 ASSERT_TRUE(item);
2256 ScopedCancellingItem canceller(item);
2257 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2258 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2259 base::StringPrintf("[{\"danger\": \"safe\","
2260 " \"incognito\": false,"
2261 " \"id\": %d,"
2262 " \"mime\": \"text/plain\","
2263 " \"paused\": false,"
2264 " \"url\": \"%s\"}]",
2265 result_id,
2266 download_url.c_str())));
2267 ASSERT_TRUE(WaitFor(
2268 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2269 base::StringPrintf("[{\"id\": %d,"
2270 " \"filename\":\"slow.txt\"}]",
2271 result_id)));
2272 ASSERT_TRUE(item->GetTargetFilePath().empty());
2273 ASSERT_TRUE(item->IsInProgress());
2274 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2275 browser()->profile(),
2276 false,
2277 GetExtensionId(),
2278 "42",
2279 result_id,
2280 FilePath(FILE_PATH_LITERAL("overridden.swf")),
2281 false));
2282 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2283 base::StringPrintf("[{\"id\": %d,"
2284 " \"danger\": {"
2285 " \"previous\":\"safe\","
2286 " \"current\":\"file\"},"
2287 " \"dangerAccepted\": {"
2288 " \"current\":false}}]",
2289 result_id)));
2290 item->DangerousDownloadValidated();
2291 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2292 base::StringPrintf("[{\"id\": %d,"
2293 " \"dangerAccepted\": {"
2294 " \"previous\":false,"
2295 " \"current\":true}}]",
2296 result_id)));
2297 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2298 base::StringPrintf("[{\"id\": %d,"
2299 " \"filename\": {"
2300 " \"previous\": \"%s\","
2301 " \"current\": \"%s\"},"
2302 " \"state\": {"
2303 " \"previous\": \"in_progress\","
2304 " \"current\": \"complete\"}}]",
2305 result_id,
2306 GetFilename("overridden.swf.crdownload").c_str(),
2307 GetFilename("overridden.swf").c_str())));
2308 }
2309
2310 IN_PROC_BROWSER_TEST_F(
2311 DownloadExtensionTest,
2312 DownloadExtensionTest_OnDeterminingFilename_ReferencesParentInvalid) {
2313 GoOnTheRecord();
2314 LoadExtension("downloads_split");
2315 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2316 browser()->profile(),
2317 GetExtensionId(),
2318 "42"));
2319 CHECK(StartTestServer());
2320 std::string download_url = test_server()->GetURL("slow?0").spec();
2321 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2322 new DownloadsDownloadFunction(), base::StringPrintf(
2323 "[{\"url\": \"%s\"}]", download_url.c_str())));
2324 ASSERT_TRUE(result.get());
2325 int result_id = -1;
2326 ASSERT_TRUE(result->GetAsInteger(&result_id));
2327 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2328 ASSERT_TRUE(item);
2329 ScopedCancellingItem canceller(item);
2330 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2331 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2332 base::StringPrintf("[{\"danger\": \"safe\","
2333 " \"incognito\": false,"
2334 " \"id\": %d,"
2335 " \"mime\": \"text/plain\","
2336 " \"paused\": false,"
2337 " \"url\": \"%s\"}]",
2338 result_id,
2339 download_url.c_str())));
2340 ASSERT_TRUE(WaitFor(
2341 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2342 base::StringPrintf("[{\"id\": %d,"
2343 " \"filename\":\"slow.txt\"}]",
2344 result_id)));
2345 ASSERT_TRUE(item->GetTargetFilePath().empty());
2346 ASSERT_TRUE(item->IsInProgress());
2347 ASSERT_FALSE(ExtensionDownloadsEventRouter::DetermineFilename(
2348 browser()->profile(),
2349 false,
2350 GetExtensionId(),
2351 "42",
2352 result_id,
2353 FilePath(FILE_PATH_LITERAL("../sneaky.txt")),
Randy Smith (Not in Mondays) 2013/01/22 19:43:08 Just because I'm a paranoid control free, could yo
benjhayden 2013/01/23 21:30:10 Done.
2354 false));
2355 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2356 base::StringPrintf("[{\"id\": %d,"
2357 " \"filename\": {"
2358 " \"previous\": \"%s\","
2359 " \"current\": \"%s\"},"
2360 " \"state\": {"
2361 " \"previous\": \"in_progress\","
2362 " \"current\": \"complete\"}}]",
2363 result_id,
2364 GetFilename("slow.txt.crdownload").c_str(),
2365 GetFilename("slow.txt").c_str())));
2366 }
2367
2368 IN_PROC_BROWSER_TEST_F(
2369 DownloadExtensionTest,
2370 DownloadExtensionTest_OnDeterminingFilename_CurDirInvalid) {
2371 GoOnTheRecord();
2372 LoadExtension("downloads_split");
2373 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2374 browser()->profile(),
2375 GetExtensionId(),
2376 "42"));
2377 CHECK(StartTestServer());
2378 std::string download_url = test_server()->GetURL("slow?0").spec();
2379 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2380 new DownloadsDownloadFunction(), base::StringPrintf(
2381 "[{\"url\": \"%s\"}]", download_url.c_str())));
2382 ASSERT_TRUE(result.get());
2383 int result_id = -1;
2384 ASSERT_TRUE(result->GetAsInteger(&result_id));
2385 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2386 ASSERT_TRUE(item);
2387 ScopedCancellingItem canceller(item);
2388 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2389 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2390 base::StringPrintf("[{\"danger\": \"safe\","
2391 " \"incognito\": false,"
2392 " \"id\": %d,"
2393 " \"mime\": \"text/plain\","
2394 " \"paused\": false,"
2395 " \"url\": \"%s\"}]",
2396 result_id,
2397 download_url.c_str())));
2398 ASSERT_TRUE(WaitFor(
2399 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2400 base::StringPrintf("[{\"id\": %d,"
2401 " \"filename\":\"slow.txt\"}]",
2402 result_id)));
2403 ASSERT_TRUE(item->GetTargetFilePath().empty());
2404 ASSERT_TRUE(item->IsInProgress());
2405 ASSERT_FALSE(ExtensionDownloadsEventRouter::DetermineFilename(
2406 browser()->profile(),
2407 false,
2408 GetExtensionId(),
2409 "42",
2410 result_id,
2411 FilePath(FILE_PATH_LITERAL(".")),
2412 false));
2413 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2414 base::StringPrintf("[{\"id\": %d,"
2415 " \"filename\": {"
2416 " \"previous\": \"%s\","
2417 " \"current\": \"%s\"},"
2418 " \"state\": {"
2419 " \"previous\": \"in_progress\","
2420 " \"current\": \"complete\"}}]",
2421 result_id,
2422 GetFilename("slow.txt.crdownload").c_str(),
2423 GetFilename("slow.txt").c_str())));
2424 }
2425
2426 IN_PROC_BROWSER_TEST_F(
2427 DownloadExtensionTest,
2428 DownloadExtensionTest_OnDeterminingFilename_ParentDirInvalid) {
2429 CHECK(StartTestServer());
2430 GoOnTheRecord();
2431 LoadExtension("downloads_split");
2432 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2433 browser()->profile(),
2434 GetExtensionId(),
2435 "42"));
2436 std::string download_url = test_server()->GetURL("slow?0").spec();
2437 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2438 new DownloadsDownloadFunction(), base::StringPrintf(
2439 "[{\"url\": \"%s\"}]", download_url.c_str())));
2440 ASSERT_TRUE(result.get());
2441 int result_id = -1;
2442 ASSERT_TRUE(result->GetAsInteger(&result_id));
2443 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2444 ASSERT_TRUE(item);
2445 ScopedCancellingItem canceller(item);
2446 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2447 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2448 base::StringPrintf("[{\"danger\": \"safe\","
2449 " \"incognito\": false,"
2450 " \"id\": %d,"
2451 " \"mime\": \"text/plain\","
2452 " \"paused\": false,"
2453 " \"url\": \"%s\"}]",
2454 result_id,
2455 download_url.c_str())));
2456 ASSERT_TRUE(WaitFor(
2457 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2458 base::StringPrintf("[{\"id\": %d,"
2459 " \"filename\":\"slow.txt\"}]",
2460 result_id)));
2461 ASSERT_TRUE(item->GetTargetFilePath().empty());
2462 ASSERT_TRUE(item->IsInProgress());
2463 ASSERT_FALSE(ExtensionDownloadsEventRouter::DetermineFilename(
2464 browser()->profile(),
2465 false,
2466 GetExtensionId(),
2467 "42",
2468 result_id,
2469 FilePath(FILE_PATH_LITERAL("..")),
2470 false));
2471 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2472 base::StringPrintf("[{\"id\": %d,"
2473 " \"filename\": {"
2474 " \"previous\": \"%s\","
2475 " \"current\": \"%s\"},"
2476 " \"state\": {"
2477 " \"previous\": \"in_progress\","
2478 " \"current\": \"complete\"}}]",
2479 result_id,
2480 GetFilename("slow.txt.crdownload").c_str(),
2481 GetFilename("slow.txt").c_str())));
2482 }
2483
2484 IN_PROC_BROWSER_TEST_F(
2485 DownloadExtensionTest,
2486 DownloadExtensionTest_OnDeterminingFilename_AbsPathInvalid) {
2487 GoOnTheRecord();
2488 LoadExtension("downloads_split");
2489 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2490 browser()->profile(),
2491 GetExtensionId(),
2492 "42"));
2493 CHECK(StartTestServer());
2494 std::string download_url = test_server()->GetURL("slow?0").spec();
2495 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2496 new DownloadsDownloadFunction(), base::StringPrintf(
2497 "[{\"url\": \"%s\"}]", download_url.c_str())));
2498 ASSERT_TRUE(result.get());
2499 int result_id = -1;
2500 ASSERT_TRUE(result->GetAsInteger(&result_id));
2501 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2502 ASSERT_TRUE(item);
2503 ScopedCancellingItem canceller(item);
2504 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2505 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2506 base::StringPrintf("[{\"danger\": \"safe\","
2507 " \"incognito\": false,"
2508 " \"id\": %d,"
2509 " \"mime\": \"text/plain\","
2510 " \"paused\": false,"
2511 " \"url\": \"%s\"}]",
2512 result_id,
2513 download_url.c_str())));
2514 ASSERT_TRUE(WaitFor(
2515 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2516 base::StringPrintf("[{\"id\": %d,"
2517 " \"filename\":\"slow.txt\"}]",
2518 result_id)));
2519 ASSERT_TRUE(item->GetTargetFilePath().empty());
2520 ASSERT_TRUE(item->IsInProgress());
2521 FilePath override;
2522 #if defined(OS_WIN)
2523 override = FilePath(FILE_PATH_LITERAL("C:\\windows\\system32\\mwahaha.dll"));
Randy Smith (Not in Mondays) 2013/01/22 19:43:08 Suggestion: Make these locations you could write t
benjhayden 2013/01/23 21:30:10 Done.
2524 #else
2525 override = FilePath(FILE_PATH_LITERAL("/bin/cat"));
2526 #endif
2527 ASSERT_FALSE(ExtensionDownloadsEventRouter::DetermineFilename(
2528 browser()->profile(),
2529 false,
2530 GetExtensionId(),
2531 "42",
2532 result_id,
2533 override,
2534 false));
2535 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2536 base::StringPrintf("[{\"id\": %d,"
2537 " \"filename\": {"
2538 " \"previous\": \"%s\","
2539 " \"current\": \"%s\"},"
2540 " \"state\": {"
2541 " \"previous\": \"in_progress\","
2542 " \"current\": \"complete\"}}]",
2543 result_id,
2544 GetFilename("slow.txt.crdownload").c_str(),
2545 GetFilename("slow.txt").c_str())));
2546 }
2547
2548 IN_PROC_BROWSER_TEST_F(
2549 DownloadExtensionTest,
2550 DownloadExtensionTest_OnDeterminingFilename_Override) {
2551 GoOnTheRecord();
2552 LoadExtension("downloads_split");
2553 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2554 browser()->profile(),
2555 GetExtensionId(),
2556 "42"));
2557 CHECK(StartTestServer());
2558 std::string download_url = test_server()->GetURL("slow?0").spec();
2559
2560 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2561 new DownloadsDownloadFunction(), base::StringPrintf(
2562 "[{\"url\": \"%s\"}]", download_url.c_str())));
2563 ASSERT_TRUE(result.get());
2564 int result_id = -1;
2565 ASSERT_TRUE(result->GetAsInteger(&result_id));
2566 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2567 ASSERT_TRUE(item);
2568 ScopedCancellingItem canceller(item);
2569 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2570 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2571 base::StringPrintf("[{\"danger\": \"safe\","
2572 " \"incognito\": false,"
2573 " \"id\": %d,"
2574 " \"mime\": \"text/plain\","
2575 " \"paused\": false,"
2576 " \"url\": \"%s\"}]",
2577 result_id,
2578 download_url.c_str())));
2579 ASSERT_TRUE(WaitFor(
2580 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2581 base::StringPrintf("[{\"id\": %d,"
2582 " \"filename\":\"slow.txt\"}]",
2583 result_id)));
2584 ASSERT_TRUE(item->GetTargetFilePath().empty());
2585 ASSERT_TRUE(item->IsInProgress());
2586 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2587 browser()->profile(),
2588 false,
2589 GetExtensionId(),
2590 "42",
2591 result_id,
2592 FilePath(),
2593 false));
2594 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2595 base::StringPrintf("[{\"id\": %d,"
2596 " \"filename\": {"
2597 " \"previous\": \"%s\","
2598 " \"current\": \"%s\"},"
2599 " \"state\": {"
2600 " \"previous\": \"in_progress\","
2601 " \"current\": \"complete\"}}]",
2602 result_id,
2603 GetFilename("slow.txt.crdownload").c_str(),
2604 GetFilename("slow.txt").c_str())));
2605 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2606 base::StringPrintf("[{\"id\": %d,"
2607 " \"state\": {"
2608 " \"previous\": \"in_progress\","
2609 " \"current\": \"complete\"}}]",
2610 result_id)));
2611
2612 result.reset(RunFunctionAndReturnResult(
2613 new DownloadsDownloadFunction(), base::StringPrintf(
2614 "[{\"url\": \"%s\"}]", download_url.c_str())));
2615 ASSERT_TRUE(result.get());
2616 result_id = -1;
2617 ASSERT_TRUE(result->GetAsInteger(&result_id));
2618 item = GetCurrentManager()->GetDownload(result_id);
2619 ASSERT_TRUE(item);
2620 ScopedCancellingItem canceller2(item);
2621 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2622 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2623 base::StringPrintf("[{\"danger\": \"safe\","
2624 " \"incognito\": false,"
2625 " \"id\": %d,"
2626 " \"mime\": \"text/plain\","
2627 " \"paused\": false,"
2628 " \"url\": \"%s\"}]",
2629 result_id,
2630 download_url.c_str())));
2631 ASSERT_TRUE(WaitFor(
2632 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2633 base::StringPrintf("[{\"id\": %d,"
2634 " \"filename\":\"slow.txt\"}]",
2635 result_id)));
2636 ASSERT_TRUE(item->GetTargetFilePath().empty());
2637 ASSERT_TRUE(item->IsInProgress());
2638 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2639 browser()->profile(),
2640 false,
2641 GetExtensionId(),
2642 "42",
2643 result_id,
2644 FilePath(FILE_PATH_LITERAL("slow.txt")),
2645 true));
2646 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2647 base::StringPrintf("[{\"id\": %d,"
2648 " \"filename\": {"
2649 " \"previous\": \"%s\","
2650 " \"current\": \"%s\"},"
2651 " \"state\": {"
2652 " \"previous\": \"in_progress\","
2653 " \"current\": \"complete\"}}]",
2654 result_id,
2655 GetFilename("slow.txt.crdownload").c_str(),
2656 GetFilename("slow.txt").c_str())));
2657 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2658 base::StringPrintf("[{\"id\": %d,"
2659 " \"state\": {"
2660 " \"previous\": \"in_progress\","
2661 " \"current\": \"complete\"}}]",
2662 result_id)));
2663 }
2664
2665 IN_PROC_BROWSER_TEST_F(
2666 DownloadExtensionTest,
2667 DownloadExtensionTest_OnDeterminingFilename_LaterDeterminerPrecedence) {
2668 CHECK(StartTestServer());
2669 LOG(INFO) << "occam";
2670 GoOnTheRecord();
2671 LOG(INFO) << "occam";
2672 LoadExtension("downloads_split");
2673 LOG(INFO) << "occam";
2674 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2675 browser()->profile(),
2676 GetExtensionId(),
2677 "42"));
2678 LOG(INFO) << "occam";
2679 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2680 browser()->profile(),
2681 GetExtensionId(),
2682 "43"));
2683 LOG(INFO) << "occam";
2684 std::string download_url = test_server()->GetURL("slow?0").spec();
2685 LOG(INFO) << "occam";
2686 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2687 new DownloadsDownloadFunction(), base::StringPrintf(
2688 "[{\"url\": \"%s\"}]", download_url.c_str())));
2689 LOG(INFO) << "occam";
2690 ASSERT_TRUE(result.get());
2691 LOG(INFO) << "occam";
2692 int result_id = -1;
2693 ASSERT_TRUE(result->GetAsInteger(&result_id));
2694 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2695 ASSERT_TRUE(item);
2696 ScopedCancellingItem canceller(item);
2697 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2698 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2699 base::StringPrintf("[{\"danger\": \"safe\","
2700 " \"incognito\": false,"
2701 " \"id\": %d,"
2702 " \"mime\": \"text/plain\","
2703 " \"paused\": false,"
2704 " \"url\": \"%s\"}]",
2705 result_id,
2706 download_url.c_str())));
2707 ASSERT_TRUE(WaitFor(
2708 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2709 base::StringPrintf("[{\"id\": %d,"
2710 " \"filename\":\"slow.txt\"}]",
2711 result_id)));
2712 ASSERT_TRUE(WaitFor(
2713 std::string(events::kOnDownloadDeterminingFilename) + "/43",
2714 base::StringPrintf("[{\"id\": %d,"
2715 " \"filename\":\"slow.txt\"}]",
2716 result_id)));
2717 ASSERT_TRUE(item->GetTargetFilePath().empty());
2718 ASSERT_TRUE(item->IsInProgress());
2719 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2720 browser()->profile(),
2721 false,
2722 GetExtensionId(),
2723 "42",
2724 result_id,
2725 FilePath(FILE_PATH_LITERAL("42.txt")),
2726 false));
2727 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2728 browser()->profile(),
2729 false,
2730 GetExtensionId(),
2731 "43",
2732 result_id,
2733 FilePath(FILE_PATH_LITERAL("43.txt")),
2734 false));
2735 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2736 base::StringPrintf("[{\"id\": %d,"
2737 " \"filename\": {"
2738 " \"previous\": \"%s\","
2739 " \"current\": \"%s\"},"
2740 " \"state\": {"
2741 " \"previous\": \"in_progress\","
2742 " \"current\": \"complete\"}}]",
2743 result_id,
2744 GetFilename("43.txt.crdownload").c_str(),
2745 GetFilename("43.txt").c_str())));
2746 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2747 base::StringPrintf("[{\"id\": %d,"
2748 " \"state\": {"
2749 " \"previous\": \"in_progress\","
2750 " \"current\": \"complete\"}}]",
2751 result_id)));
2752
2753 result.reset(RunFunctionAndReturnResult(
2754 new DownloadsDownloadFunction(), base::StringPrintf(
2755 "[{\"url\": \"%s\"}]", download_url.c_str())));
2756 ASSERT_TRUE(result.get());
2757 result_id = -1;
2758 ASSERT_TRUE(result->GetAsInteger(&result_id));
2759 item = GetCurrentManager()->GetDownload(result_id);
2760 ASSERT_TRUE(item);
2761 ScopedCancellingItem canceller2(item);
2762 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2763 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2764 base::StringPrintf("[{\"danger\": \"safe\","
2765 " \"incognito\": false,"
2766 " \"id\": %d,"
2767 " \"mime\": \"text/plain\","
2768 " \"paused\": false,"
2769 " \"url\": \"%s\"}]",
2770 result_id,
2771 download_url.c_str())));
2772 ASSERT_TRUE(WaitFor(
2773 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2774 base::StringPrintf("[{\"id\": %d,"
2775 " \"filename\":\"slow.txt\"}]",
2776 result_id)));
2777 ASSERT_TRUE(WaitFor(
2778 std::string(events::kOnDownloadDeterminingFilename) + "/43",
2779 base::StringPrintf("[{\"id\": %d,"
2780 " \"filename\":\"slow.txt\"}]",
2781 result_id)));
2782 ASSERT_TRUE(item->GetTargetFilePath().empty());
2783 ASSERT_TRUE(item->IsInProgress());
2784 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2785 browser()->profile(),
2786 false,
2787 GetExtensionId(),
2788 "43",
2789 result_id,
2790 FilePath(FILE_PATH_LITERAL("43b.txt")),
2791 false));
2792 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2793 browser()->profile(),
2794 false,
2795 GetExtensionId(),
2796 "42",
2797 result_id,
2798 FilePath(FILE_PATH_LITERAL("42b.txt")),
2799 false));
2800 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2801 base::StringPrintf("[{\"id\": %d,"
2802 " \"filename\": {"
2803 " \"previous\": \"%s\","
2804 " \"current\": \"%s\"},"
2805 " \"state\": {"
2806 " \"previous\": \"in_progress\","
2807 " \"current\": \"complete\"}}]",
2808 result_id,
2809 GetFilename("43b.txt.crdownload").c_str(),
2810 GetFilename("43b.txt").c_str())));
2811 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2812 base::StringPrintf("[{\"id\": %d,"
2813 " \"state\": {"
2814 " \"previous\": \"in_progress\","
2815 " \"current\": \"complete\"}}]",
2816 result_id)));
2817 }
2818
2819 // TODO test precedence rules: install_time
2820
2821 IN_PROC_BROWSER_TEST_F(
2822 DownloadExtensionTest,
2823 DownloadExtensionTest_OnDeterminingFilename_RemoveFilenameDeterminer) {
2824 CHECK(StartTestServer());
2825 GoOnTheRecord();
2826 LoadExtension("downloads_split");
2827 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2828 browser()->profile(),
2829 GetExtensionId(),
2830 "42"));
2831 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2832 browser()->profile(),
2833 GetExtensionId(),
2834 "43"));
2835 std::string download_url = test_server()->GetURL("slow?0").spec();
2836 ASSERT_TRUE(ExtensionDownloadsEventRouter::RemoveFilenameDeterminer(
2837 browser()->profile(),
2838 GetExtensionId(),
2839 "42"));
2840 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2841 new DownloadsDownloadFunction(), base::StringPrintf(
2842 "[{\"url\": \"%s\"}]", download_url.c_str())));
2843 ASSERT_TRUE(result.get());
2844 int result_id = -1;
2845 ASSERT_TRUE(result->GetAsInteger(&result_id));
2846 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2847 ASSERT_TRUE(item);
2848 ScopedCancellingItem canceller(item);
2849 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2850 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2851 base::StringPrintf("[{\"danger\": \"safe\","
2852 " \"incognito\": false,"
2853 " \"id\": %d,"
2854 " \"mime\": \"text/plain\","
2855 " \"paused\": false,"
2856 " \"url\": \"%s\"}]",
2857 result_id,
2858 download_url.c_str())));
2859 ASSERT_TRUE(WaitFor(
2860 std::string(events::kOnDownloadDeterminingFilename) + "/43",
2861 base::StringPrintf("[{\"id\": %d,"
2862 " \"filename\":\"slow.txt\"}]",
2863 result_id)));
2864 ASSERT_TRUE(item->GetTargetFilePath().empty());
2865 ASSERT_TRUE(item->IsInProgress());
2866 ASSERT_TRUE(ExtensionDownloadsEventRouter::DetermineFilename(
2867 browser()->profile(),
2868 false,
2869 GetExtensionId(),
2870 "43",
2871 result_id,
2872 FilePath(),
2873 false));
2874 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2875 base::StringPrintf("[{\"id\": %d,"
2876 " \"state\": {"
2877 " \"previous\": \"in_progress\","
2878 " \"current\": \"complete\"}}]",
2879 result_id)));
2880 }
2881
2882 // TODO test incognito
2883 // TODO test incognito=spanning
Randy Smith (Not in Mondays) 2013/01/22 19:43:08 Would it be possible to add a test that runs throu
benjhayden 2013/01/23 21:30:10 Done.
Randy Smith (Not in Mondays) 2013/01/24 19:12:46 I'm not sure you added the test I was looking for,
2884
2885 IN_PROC_BROWSER_TEST_F(
2886 DownloadExtensionTest,
2887 DownloadExtensionTest_OnDeterminingFilename_DisableExtension) {
2888 GoOnTheRecord();
2889 LoadExtension("downloads_split");
2890 ASSERT_TRUE(ExtensionDownloadsEventRouter::AddFilenameDeterminer(
2891 browser()->profile(),
2892 GetExtensionId(),
2893 "42"));
2894 CHECK(StartTestServer());
2895 std::string download_url = test_server()->GetURL("slow?0").spec();
2896 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
2897 new DownloadsDownloadFunction(), base::StringPrintf(
2898 "[{\"url\": \"%s\"}]", download_url.c_str())));
2899 ASSERT_TRUE(result.get());
2900 int result_id = -1;
2901 ASSERT_TRUE(result->GetAsInteger(&result_id));
2902 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
2903 ASSERT_TRUE(item);
2904 ScopedCancellingItem canceller(item);
2905 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
2906 ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
2907 base::StringPrintf("[{\"danger\": \"safe\","
2908 " \"incognito\": false,"
2909 " \"id\": %d,"
2910 " \"mime\": \"text/plain\","
2911 " \"paused\": false,"
2912 " \"url\": \"%s\"}]",
2913 result_id,
2914 download_url.c_str())));
2915 ASSERT_TRUE(WaitFor(
2916 std::string(events::kOnDownloadDeterminingFilename) + "/42",
2917 base::StringPrintf("[{\"id\": %d,"
2918 " \"filename\":\"slow.txt\"}]",
2919 result_id)));
2920 ASSERT_TRUE(item->GetTargetFilePath().empty());
2921 ASSERT_TRUE(item->IsInProgress());
2922 DisableExtension();
2923 ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
2924 base::StringPrintf("[{\"id\": %d,"
2925 " \"state\": {"
2926 " \"previous\": \"in_progress\","
2927 " \"current\": \"complete\"}}]",
2928 result_id)));
2929 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698