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

Side by Side Diff: chrome/browser/ui/webui/downloads_dom_handler_browsertest.cc

Issue 977473002: downloads: break downloads.js into more classes/files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: thestig@ review Created 5 years, 9 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
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 "base/auto_reset.h" 5 #include "base/auto_reset.h"
6 #include "base/files/scoped_temp_dir.h" 6 #include "base/files/scoped_temp_dir.h"
7 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/download/download_item_model.h" 10 #include "chrome/browser/download/download_item_model.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 public: 54 public:
55 explicit MockDownloadsDOMHandler(content::DownloadManager* dlm) 55 explicit MockDownloadsDOMHandler(content::DownloadManager* dlm)
56 : DownloadsDOMHandler(dlm), 56 : DownloadsDOMHandler(dlm),
57 waiting_list_(false), 57 waiting_list_(false),
58 waiting_updated_(false), 58 waiting_updated_(false),
59 manager_(nullptr) { 59 manager_(nullptr) {
60 } 60 }
61 ~MockDownloadsDOMHandler() override {} 61 ~MockDownloadsDOMHandler() override {}
62 62
63 base::ListValue* downloads_list() { return downloads_list_.get(); } 63 base::ListValue* downloads_list() { return downloads_list_.get(); }
64 base::ListValue* download_updated() { return download_updated_.get(); } 64 base::DictionaryValue* download_updated() { return download_updated_.get(); }
65 65
66 void WaitForDownloadsList() { 66 void WaitForDownloadsList() {
67 if (downloads_list_.get()) 67 if (downloads_list_)
68 return; 68 return;
69 base::AutoReset<bool> reset_waiting(&waiting_list_, true); 69 base::AutoReset<bool> reset_waiting(&waiting_list_, true);
70 content::RunMessageLoop(); 70 content::RunMessageLoop();
71 } 71 }
72 72
73 void WaitForDownloadUpdated() { 73 void WaitForDownloadUpdated() {
74 if (download_updated_.get()) 74 if (download_updated_)
75 return; 75 return;
76 base::AutoReset<bool> reset_waiting(&waiting_updated_, true); 76 base::AutoReset<bool> reset_waiting(&waiting_updated_, true);
77 content::RunMessageLoop(); 77 content::RunMessageLoop();
78 } 78 }
79 79
80 void ForceSendCurrentDownloads() { 80 void ForceSendCurrentDownloads() {
81 ScheduleSendCurrentDownloads(); 81 ScheduleSendCurrentDownloads();
82 } 82 }
83 83
84 void reset_downloads_list() { downloads_list_.reset(); } 84 void reset_downloads_list() { downloads_list_.reset(); }
85 void reset_download_updated() { download_updated_.reset(); } 85 void reset_download_updated() { download_updated_.reset(); }
86 86
87 void set_manager(content::DownloadManager* manager) { manager_ = manager; } 87 void set_manager(content::DownloadManager* manager) { manager_ = manager; }
88 88
89 using DownloadsDOMHandler::FinalizeRemovals; 89 using DownloadsDOMHandler::FinalizeRemovals;
90 90
91 protected: 91 protected:
92 content::WebContents* GetWebUIWebContents() override { return NULL; } 92 content::WebContents* GetWebUIWebContents() override { return NULL; }
93 93
94 void CallDownloadsList(const base::ListValue& downloads) override { 94 void CallUpdateAll(const base::ListValue& list) override {
95 downloads_list_.reset(downloads.DeepCopy()); 95 downloads_list_.reset(list.DeepCopy());
96 if (waiting_list_) { 96 if (waiting_list_) {
97 content::BrowserThread::PostTask(content::BrowserThread::UI, 97 content::BrowserThread::PostTask(content::BrowserThread::UI,
98 FROM_HERE, 98 FROM_HERE,
99 base::MessageLoop::QuitClosure()); 99 base::MessageLoop::QuitClosure());
100 } 100 }
101 } 101 }
102 102
103 void CallDownloadUpdated(const base::ListValue& download) override { 103 void CallUpdateItem(const base::DictionaryValue& item) override {
104 download_updated_.reset(download.DeepCopy()); 104 download_updated_.reset(item.DeepCopy());
105 if (waiting_updated_) { 105 if (waiting_updated_) {
106 content::BrowserThread::PostTask(content::BrowserThread::UI, 106 content::BrowserThread::PostTask(content::BrowserThread::UI,
107 FROM_HERE, 107 FROM_HERE,
108 base::MessageLoop::QuitClosure()); 108 base::MessageLoop::QuitClosure());
109 } 109 }
110 } 110 }
111 111
112 content::DownloadManager* GetMainNotifierManager() override { 112 content::DownloadManager* GetMainNotifierManager() override {
113 return manager_ ? manager_ : DownloadsDOMHandler::GetMainNotifierManager(); 113 return manager_ ? manager_ : DownloadsDOMHandler::GetMainNotifierManager();
114 } 114 }
115 115
116 private: 116 private:
117 scoped_ptr<base::ListValue> downloads_list_; 117 scoped_ptr<base::ListValue> downloads_list_;
118 scoped_ptr<base::ListValue> download_updated_; 118 scoped_ptr<base::DictionaryValue> download_updated_;
119 bool waiting_list_; 119 bool waiting_list_;
120 bool waiting_updated_; 120 bool waiting_updated_;
121 content::DownloadManager* manager_; // weak. 121 content::DownloadManager* manager_; // weak.
122 122
123 DISALLOW_COPY_AND_ASSIGN(MockDownloadsDOMHandler); 123 DISALLOW_COPY_AND_ASSIGN(MockDownloadsDOMHandler);
124 }; 124 };
125 125
126 } // namespace 126 } // namespace
127 127
128 class DownloadsDOMHandlerTest : public InProcessBrowserTest { 128 class DownloadsDOMHandlerTest : public InProcessBrowserTest {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 current, 161 current,
162 std::string(), 162 std::string(),
163 std::string(), 163 std::string(),
164 128, 164 128,
165 128, 165 128,
166 content::DownloadItem::COMPLETE, 166 content::DownloadItem::COMPLETE,
167 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 167 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
168 content::DOWNLOAD_INTERRUPT_REASON_NONE, 168 content::DOWNLOAD_INTERRUPT_REASON_NONE,
169 false); 169 false);
170 170
171 mock_handler_->ForceSendCurrentDownloads();
171 mock_handler_->WaitForDownloadsList(); 172 mock_handler_->WaitForDownloadsList();
172 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 173 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
173 EXPECT_TRUE(ListMatches( 174 EXPECT_TRUE(ListMatches(
174 mock_handler_->downloads_list(), 175 mock_handler_->downloads_list(),
175 "[{\"file_externally_removed\": false," 176 "[{\"file_externally_removed\": false,"
176 " \"file_name\": \"file\"," 177 " \"file_name\": \"file\","
177 " \"id\": \"1\"," 178 " \"id\": \"1\","
178 " \"otr\": false," 179 " \"otr\": false,"
179 " \"since_string\": \"Today\"," 180 " \"since_string\": \"Today\","
180 " \"state\": \"COMPLETE\"," 181 " \"state\": \"COMPLETE\","
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 EXPECT_TRUE(DownloadItemModel(&item).ShouldShowInShelf()); 254 EXPECT_TRUE(DownloadItemModel(&item).ShouldShowInShelf());
254 } 255 }
255 256
256 // Tests that DownloadsDOMHandler detects new downloads and relays them to the 257 // Tests that DownloadsDOMHandler detects new downloads and relays them to the
257 // renderer. 258 // renderer.
258 // crbug.com/159390: This test fails when daylight savings time ends. 259 // crbug.com/159390: This test fails when daylight savings time ends.
259 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, DownloadsRelayed) { 260 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, DownloadsRelayed) {
260 DownloadAnItem(); 261 DownloadAnItem();
261 262
262 mock_handler_->WaitForDownloadUpdated(); 263 mock_handler_->WaitForDownloadUpdated();
263 ASSERT_EQ(1, static_cast<int>(mock_handler_->download_updated()->GetSize())); 264 const base::DictionaryValue* update = mock_handler_->download_updated();
264 EXPECT_TRUE(ListMatches( 265 ASSERT_TRUE(update);
265 mock_handler_->download_updated(), 266
266 "[{\"file_externally_removed\": true," 267 bool removed;
267 " \"id\": \"1\"}]")); 268 ASSERT_TRUE(update->GetBoolean("file_externally_removed", &removed));
269 EXPECT_TRUE(removed);
270
271 std::string id;
272 ASSERT_TRUE(update->GetString("id", &id));
273 EXPECT_EQ("1", id);
268 274
269 mock_handler_->reset_downloads_list(); 275 mock_handler_->reset_downloads_list();
270 browser()->profile()->GetPrefs()->SetBoolean( 276 browser()->profile()->GetPrefs()->SetBoolean(
271 prefs::kAllowDeletingBrowserHistory, true); 277 prefs::kAllowDeletingBrowserHistory, true);
272 mock_handler_->HandleClearAll(NULL); 278 mock_handler_->HandleClearAll(NULL);
273 mock_handler_->WaitForDownloadsList(); 279 mock_handler_->WaitForDownloadsList();
274 EXPECT_EQ(0, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 280 EXPECT_EQ(0, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
275 } 281 }
276 282
277 // Tests that DownloadsDOMHandler actually calls DownloadItem::Remove() when 283 // Tests that DownloadsDOMHandler actually calls DownloadItem::Remove() when
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 // TODO(benjhayden): Test incognito, both downloads_list() and that on-record 315 // TODO(benjhayden): Test incognito, both downloads_list() and that on-record
310 // calls can't access off-record items. 316 // calls can't access off-record items.
311 317
312 // TODO(benjhayden): Test that bad download ids incoming from the javascript are 318 // TODO(benjhayden): Test that bad download ids incoming from the javascript are
313 // dropped on the floor. 319 // dropped on the floor.
314 320
315 // TODO(benjhayden): Test that IsTemporary() downloads are not shown. 321 // TODO(benjhayden): Test that IsTemporary() downloads are not shown.
316 322
317 // TODO(benjhayden): Test that RemoveObserver is called on all download items, 323 // TODO(benjhayden): Test that RemoveObserver is called on all download items,
318 // including items that crossed IsTemporary() and back. 324 // including items that crossed IsTemporary() and back.
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/downloads_dom_handler.cc ('k') | chrome/browser/ui/webui/downloads_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698