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

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

Issue 795353002: downloads: prevent "Clear all" from removing in progress downloads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: todo Created 6 years 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/history/download_row.h" 10 #include "chrome/browser/history/download_row.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 browser()->profile()->GetPrefs()->SetFilePath( 125 browser()->profile()->GetPrefs()->SetFilePath(
126 prefs::kDownloadDefaultDirectory, 126 prefs::kDownloadDefaultDirectory,
127 downloads_directory_.path()); 127 downloads_directory_.path());
128 CHECK(test_server()->Start()); 128 CHECK(test_server()->Start());
129 } 129 }
130 130
131 content::DownloadManager* download_manager() { 131 content::DownloadManager* download_manager() {
132 return content::BrowserContext::GetDownloadManager(browser()->profile()); 132 return content::BrowserContext::GetDownloadManager(browser()->profile());
133 } 133 }
134 134
135 void DownloadAnItem() { 135 void DownloadAnItem(bool in_progress) {
136 GURL url = test_server()->GetURL("files/downloads/image.jpg"); 136 GURL url = test_server()->GetURL("files/downloads/image.jpg");
137 std::vector<GURL> url_chain; 137 std::vector<GURL> url_chain;
138 url_chain.push_back(url); 138 url_chain.push_back(url);
139 base::Time current(base::Time::Now()); 139 base::Time current(base::Time::Now());
140 download_manager()->CreateDownloadItem( 140 download_manager()->CreateDownloadItem(
141 1, // id 141 1, // id
142 base::FilePath(FILE_PATH_LITERAL("/path/to/file")), 142 base::FilePath(FILE_PATH_LITERAL("/path/to/file")),
143 base::FilePath(FILE_PATH_LITERAL("/path/to/file")), 143 base::FilePath(FILE_PATH_LITERAL("/path/to/file")),
144 url_chain, 144 url_chain,
145 GURL(std::string()), 145 GURL(std::string()),
146 "application/octet-stream", 146 "application/octet-stream",
147 "application/octet-stream", 147 "application/octet-stream",
148 current, 148 current,
149 current, 149 current,
150 std::string(), 150 std::string(),
151 std::string(), 151 std::string(),
152 128, 152 128,
153 128, 153 128,
154 content::DownloadItem::COMPLETE, 154 in_progress ? content::DownloadItem::IN_PROGRESS :
155 content::DownloadItem::COMPLETE,
155 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, 156 content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
156 content::DOWNLOAD_INTERRUPT_REASON_NONE, 157 content::DOWNLOAD_INTERRUPT_REASON_NONE,
157 false); 158 false);
158 159
159 mock_handler_->WaitForDownloadsList(); 160 mock_handler_->WaitForDownloadsList();
160 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 161 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
162 std::string state = in_progress ? "IN_PROGRESS" : "COMPLETE";
161 EXPECT_TRUE(ListMatches( 163 EXPECT_TRUE(ListMatches(
162 mock_handler_->downloads_list(), 164 mock_handler_->downloads_list(),
163 "[{\"file_externally_removed\": false," 165 "[{\"file_externally_removed\": false,"
164 " \"file_name\": \"file\"," 166 " \"file_name\": \"file\","
165 " \"id\": \"1\"," 167 " \"id\": \"1\","
166 " \"otr\": false," 168 " \"otr\": false,"
167 " \"since_string\": \"Today\"," 169 " \"since_string\": \"Today\","
168 " \"state\": \"COMPLETE\"," 170 " \"state\": \"" + state + "\","
169 " \"total\": 128}]")); 171 " \"total\": 128}]"));
170 } 172 }
171 173
172 protected: 174 protected:
173 scoped_ptr<MockDownloadsDOMHandler> mock_handler_; 175 scoped_ptr<MockDownloadsDOMHandler> mock_handler_;
174 176
175 private: 177 private:
176 base::ScopedTempDir downloads_directory_; 178 base::ScopedTempDir downloads_directory_;
177 179
178 DISALLOW_COPY_AND_ASSIGN(DownloadsDOMHandlerTest); 180 DISALLOW_COPY_AND_ASSIGN(DownloadsDOMHandlerTest);
179 }; 181 };
180 182
181 // Tests removing all items, both when prohibited and when allowed. 183 // Tests removing all items, both when prohibited and when allowed.
182 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, RemoveAll) { 184 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, RemoveAll) {
183 DownloadAnItem(); 185 DownloadAnItem(false);
184 186
185 mock_handler_->reset_downloads_list(); 187 mock_handler_->reset_downloads_list();
186 browser()->profile()->GetPrefs()->SetBoolean( 188 browser()->profile()->GetPrefs()->SetBoolean(
187 prefs::kAllowDeletingBrowserHistory, false); 189 prefs::kAllowDeletingBrowserHistory, false);
188 mock_handler_->HandleClearAll(NULL); 190 mock_handler_->HandleClearAll(NULL);
189 // Attempting to clear all shouldn't do anything when deletion is disabled. 191 // Attempting to clear all shouldn't do anything when deletion is disabled.
190 mock_handler_->ForceSendCurrentDownloads(); 192 mock_handler_->ForceSendCurrentDownloads();
191 mock_handler_->WaitForDownloadsList(); 193 mock_handler_->WaitForDownloadsList();
192 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 194 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
193 195
194 mock_handler_->reset_downloads_list(); 196 mock_handler_->reset_downloads_list();
195 browser()->profile()->GetPrefs()->SetBoolean( 197 browser()->profile()->GetPrefs()->SetBoolean(
196 prefs::kAllowDeletingBrowserHistory, true); 198 prefs::kAllowDeletingBrowserHistory, true);
197 mock_handler_->HandleClearAll(NULL); 199 mock_handler_->HandleClearAll(NULL);
198 mock_handler_->WaitForDownloadsList(); 200 mock_handler_->WaitForDownloadsList();
199 EXPECT_EQ(0, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 201 EXPECT_EQ(0, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
200 } 202 }
201 203
204 // Tests removing all items, both when prohibited and when allowed.
205 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, RemoveAllIgnoresInProgress) {
206 DownloadAnItem(true);
207
208 mock_handler_->reset_downloads_list();
209 mock_handler_->HandleClearAll(NULL);
210 mock_handler_->ForceSendCurrentDownloads();
211 mock_handler_->WaitForDownloadsList();
212 EXPECT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
213
214 // Cancel the download so Chrome can shut down.
215 download_manager()->GetDownload(1)->Cancel(false);
216 }
217
202 // Tests removing one item, both when prohibited and when allowed. 218 // Tests removing one item, both when prohibited and when allowed.
203 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, RemoveOneItem) { 219 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, RemoveOneItem) {
204 DownloadAnItem(); 220 DownloadAnItem(false);
205 base::ListValue item; 221 base::ListValue item;
206 item.AppendString("1"); 222 item.AppendString("1");
207 223
208 mock_handler_->reset_downloads_list(); 224 mock_handler_->reset_downloads_list();
209 browser()->profile()->GetPrefs()->SetBoolean( 225 browser()->profile()->GetPrefs()->SetBoolean(
210 prefs::kAllowDeletingBrowserHistory, false); 226 prefs::kAllowDeletingBrowserHistory, false);
211 mock_handler_->HandleRemove(&item); 227 mock_handler_->HandleRemove(&item);
212 // Removing an item only sends the new download list if anything was actually 228 // Removing an item only sends the new download list if anything was actually
213 // removed, so force it. 229 // removed, so force it.
214 mock_handler_->ForceSendCurrentDownloads(); 230 mock_handler_->ForceSendCurrentDownloads();
215 mock_handler_->WaitForDownloadsList(); 231 mock_handler_->WaitForDownloadsList();
216 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 232 ASSERT_EQ(1, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
217 233
218 mock_handler_->reset_downloads_list(); 234 mock_handler_->reset_downloads_list();
219 browser()->profile()->GetPrefs()->SetBoolean( 235 browser()->profile()->GetPrefs()->SetBoolean(
220 prefs::kAllowDeletingBrowserHistory, true); 236 prefs::kAllowDeletingBrowserHistory, true);
221 mock_handler_->HandleRemove(&item); 237 mock_handler_->HandleRemove(&item);
222 mock_handler_->WaitForDownloadsList(); 238 mock_handler_->WaitForDownloadsList();
223 EXPECT_EQ(0, static_cast<int>(mock_handler_->downloads_list()->GetSize())); 239 EXPECT_EQ(0, static_cast<int>(mock_handler_->downloads_list()->GetSize()));
224 } 240 }
225 241
226 // Tests that DownloadsDOMHandler detects new downloads and relays them to the 242 // Tests that DownloadsDOMHandler detects new downloads and relays them to the
227 // renderer. 243 // renderer.
228 // crbug.com/159390: This test fails when daylight savings time ends. 244 // crbug.com/159390: This test fails when daylight savings time ends.
229 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, DownloadsRelayed) { 245 IN_PROC_BROWSER_TEST_F(DownloadsDOMHandlerTest, DownloadsRelayed) {
230 DownloadAnItem(); 246 DownloadAnItem(false);
231 247
232 mock_handler_->WaitForDownloadUpdated(); 248 mock_handler_->WaitForDownloadUpdated();
233 ASSERT_EQ(1, static_cast<int>(mock_handler_->download_updated()->GetSize())); 249 ASSERT_EQ(1, static_cast<int>(mock_handler_->download_updated()->GetSize()));
234 EXPECT_TRUE(ListMatches( 250 EXPECT_TRUE(ListMatches(
235 mock_handler_->download_updated(), 251 mock_handler_->download_updated(),
236 "[{\"file_externally_removed\": true," 252 "[{\"file_externally_removed\": true,"
237 " \"id\": \"1\"}]")); 253 " \"id\": \"1\"}]"));
238 254
239 mock_handler_->reset_downloads_list(); 255 mock_handler_->reset_downloads_list();
240 browser()->profile()->GetPrefs()->SetBoolean( 256 browser()->profile()->GetPrefs()->SetBoolean(
(...skipping 10 matching lines...) Expand all
251 // TODO(benjhayden): Test incognito, both downloads_list() and that on-record 267 // TODO(benjhayden): Test incognito, both downloads_list() and that on-record
252 // calls can't access off-record items. 268 // calls can't access off-record items.
253 269
254 // TODO(benjhayden): Test that bad download ids incoming from the javascript are 270 // TODO(benjhayden): Test that bad download ids incoming from the javascript are
255 // dropped on the floor. 271 // dropped on the floor.
256 272
257 // TODO(benjhayden): Test that IsTemporary() downloads are not shown. 273 // TODO(benjhayden): Test that IsTemporary() downloads are not shown.
258 274
259 // TODO(benjhayden): Test that RemoveObserver is called on all download items, 275 // TODO(benjhayden): Test that RemoveObserver is called on all download items,
260 // including items that crossed IsTemporary() and back. 276 // including items that crossed IsTemporary() and back.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698