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

Side by Side Diff: chrome/browser/download/save_page_browsertest.cc

Issue 6973052: When the download folder does not exist, change the download folder to a user's "Downloads" (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Correct typo Created 9 years, 6 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) 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 "base/file_path.h" 5 #include "base/file_path.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/i18n/file_util_icu.h"
7 #include "base/path_service.h" 8 #include "base/path_service.h"
8 #include "base/scoped_temp_dir.h" 9 #include "base/scoped_temp_dir.h"
10 #include "base/string_util.h"
9 #include "chrome/app/chrome_command_ids.h" 11 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/net/url_request_mock_http_job.h" 12 #include "chrome/browser/net/url_request_mock_http_job.h"
11 #include "chrome/browser/ui/browser.h" 13 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/browser_window.h" 14 #include "chrome/browser/ui/browser_window.h"
13 #include "chrome/browser/ui/download/download_tab_helper.h" 15 #include "chrome/browser/ui/download/download_tab_helper.h"
14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 16 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
15 #include "chrome/common/chrome_paths.h" 17 #include "chrome/common/chrome_paths.h"
16 #include "chrome/common/url_constants.h" 18 #include "chrome/common/url_constants.h"
17 #include "chrome/test/in_process_browser_test.h" 19 #include "chrome/test/in_process_browser_test.h"
18 #include "chrome/test/ui_test_utils.h" 20 #include "chrome/test/ui_test_utils.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 test_dir_.Append(FilePath(kTestDir)).AppendASCII("b.saved1.htm"), 136 test_dir_.Append(FilePath(kTestDir)).AppendASCII("b.saved1.htm"),
135 full_file_name)); 137 full_file_name));
136 EXPECT_TRUE(file_util::ContentsEqual( 138 EXPECT_TRUE(file_util::ContentsEqual(
137 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.png"), 139 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.png"),
138 dir.AppendASCII("1.png"))); 140 dir.AppendASCII("1.png")));
139 EXPECT_TRUE(file_util::ContentsEqual( 141 EXPECT_TRUE(file_util::ContentsEqual(
140 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.css"), 142 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.css"),
141 dir.AppendASCII("1.css"))); 143 dir.AppendASCII("1.css")));
142 } 144 }
143 145
146 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SavedDirectory) {
Randy Smith (Not in Mondays) 2011/05/31 23:03:10 I know it's not consistent with the rest of the fi
haraken1 2011/06/02 09:13:22 I added a detailed comment for the test. Also, for
147 FilePath file_name(FILE_PATH_LITERAL("a.htm"));
148 GURL url = URLRequestMockHTTPJob::GetMockUrl(
149 FilePath(kTestDir).Append(file_name));
150 ui_test_utils::NavigateToURL(browser(), url);
151
152 TabContentsWrapper* current_tab = browser()->GetSelectedTabContentsWrapper();
153 ASSERT_TRUE(current_tab);
154
155 ScopedTempDir website_save_temp_dir, download_save_temp_dir;
156 // The default folder for saving HTML.
157 ASSERT_TRUE(website_save_temp_dir.CreateUniqueTempDir());
158 // The default folder for saving downloaded files.
159 ASSERT_TRUE(download_save_temp_dir.CreateUniqueTempDir());
160 FilePath website_save_dir = website_save_temp_dir.path();
161 FilePath download_save_dir = download_save_temp_dir.path();
162 FilePath default_save_dir;
163 PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &default_save_dir);
Paweł Hajdan Jr. 2011/05/31 17:15:53 Check the return value.
haraken1 2011/06/02 09:13:22 Done.
164 ASSERT_TRUE(file_util::PathExists(default_save_dir));
165 FilePath full_file_name;
166 std::string title;
167
168 title = UTF16ToASCII(
Paweł Hajdan Jr. 2011/05/31 17:15:53 nit: Why not initialize title when declaring it th
haraken1 2011/06/02 09:13:22 Done.
169 current_tab->download_tab_helper()->SavePageToProperDirectory(
170 website_save_dir, download_save_dir, SavePackage::SAVE_AS_ONLY_HTML));
171 file_util::ReplaceIllegalCharactersInPath(&title, ' ');
172 full_file_name = website_save_dir.Append(FilePath(title + ".html"));
173
174 EXPECT_EQ(url, WaitForSavePackageToFinish());
175
176 if (browser()->SupportsWindowFeature(Browser::FEATURE_DOWNLOADSHELF))
177 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
178
179 EXPECT_TRUE(file_util::PathExists(full_file_name));
180 EXPECT_TRUE(file_util::ContentsEqual(
181 test_dir_.Append(FilePath(kTestDir)).Append(file_name),
182 full_file_name));
183
184 // Delete the default folder for saving HTML.
Paweł Hajdan Jr. 2011/05/31 17:15:53 This is weird. Why don't we just pass a nonexisten
Randy Smith (Not in Mondays) 2011/05/31 23:03:10 Is there a way to create a unique temp dir that do
Paweł Hajdan Jr. 2011/06/01 07:08:09 I'd say just pass some dir name like /this/dir/doe
haraken1 2011/06/02 09:13:22 Done.
185 ASSERT_TRUE(website_save_temp_dir.Delete());
186
187 title = UTF16ToASCII(
188 current_tab->download_tab_helper()->SavePageToProperDirectory(
189 website_save_dir, download_save_dir, SavePackage::SAVE_AS_ONLY_HTML));
190 file_util::ReplaceIllegalCharactersInPath(&title, ' ');
191 full_file_name = download_save_dir.Append(FilePath(title + ".html"));
192
193 EXPECT_EQ(url, WaitForSavePackageToFinish());
194
195 if (browser()->SupportsWindowFeature(Browser::FEATURE_DOWNLOADSHELF))
196 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
197
198 EXPECT_TRUE(file_util::PathExists(full_file_name));
199 EXPECT_TRUE(file_util::ContentsEqual(
200 test_dir_.Append(FilePath(kTestDir)).Append(file_name),
201 full_file_name));
202
203 // Delete the default folder for downloaded files.
204 ASSERT_TRUE(download_save_temp_dir.Delete());
Paweł Hajdan Jr. 2011/05/31 17:15:53 Why do we explicitly do that here?
haraken1 2011/06/02 09:13:22 I removed it.
205
206 title = UTF16ToASCII(
207 current_tab->download_tab_helper()->SavePageToProperDirectory(
208 website_save_dir, download_save_dir, SavePackage::SAVE_AS_ONLY_HTML));
209 file_util::ReplaceIllegalCharactersInPath(&title, ' ');
210 full_file_name = default_save_dir.Append(FilePath(title + ".html"));
211
212 EXPECT_EQ(url, WaitForSavePackageToFinish());
213
214 if (browser()->SupportsWindowFeature(Browser::FEATURE_DOWNLOADSHELF))
215 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
216
217 EXPECT_TRUE(file_util::PathExists(full_file_name));
218 EXPECT_TRUE(file_util::ContentsEqual(
219 test_dir_.Append(FilePath(kTestDir)).Append(file_name),
220 full_file_name));
221
222 // Delete the file that we created in a user's "Downloads" directory.
223 ASSERT_TRUE(file_util::Delete(full_file_name, false));
Paweł Hajdan Jr. 2011/05/31 17:15:53 Why do we explicitly do that here?
haraken1 2011/06/02 09:13:22 Done.
224 }
225
144 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, NoSave) { 226 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, NoSave) {
145 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); 227 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL));
146 ASSERT_TRUE(browser()->command_updater()->SupportsCommand(IDC_SAVE_PAGE)); 228 ASSERT_TRUE(browser()->command_updater()->SupportsCommand(IDC_SAVE_PAGE));
147 EXPECT_FALSE(browser()->command_updater()->IsCommandEnabled(IDC_SAVE_PAGE)); 229 EXPECT_FALSE(browser()->command_updater()->IsCommandEnabled(IDC_SAVE_PAGE));
148 } 230 }
149 231
150 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, FileNameFromPageTitle) { 232 IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, FileNameFromPageTitle) {
151 FilePath file_name(FILE_PATH_LITERAL("b.htm")); 233 FilePath file_name(FILE_PATH_LITERAL("b.htm"));
152 234
153 GURL url = URLRequestMockHTTPJob::GetMockUrl( 235 GURL url = URLRequestMockHTTPJob::GetMockUrl(
(...skipping 23 matching lines...) Expand all
177 full_file_name)); 259 full_file_name));
178 EXPECT_TRUE(file_util::ContentsEqual( 260 EXPECT_TRUE(file_util::ContentsEqual(
179 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.png"), 261 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.png"),
180 dir.AppendASCII("1.png"))); 262 dir.AppendASCII("1.png")));
181 EXPECT_TRUE(file_util::ContentsEqual( 263 EXPECT_TRUE(file_util::ContentsEqual(
182 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.css"), 264 test_dir_.Append(FilePath(kTestDir)).AppendASCII("1.css"),
183 dir.AppendASCII("1.css"))); 265 dir.AppendASCII("1.css")));
184 } 266 }
185 267
186 } // namespace 268 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698