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

Side by Side Diff: chrome/browser/download/save_package.h

Issue 23004: Port some strings in download/save_package.cc (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 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
« no previous file with comments | « no previous file | chrome/browser/download/save_package.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #ifndef CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_ 5 #ifndef CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_
6 #define CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_ 6 #define CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_
7 7
8 #include <hash_map>
9 #include <queue>
8 #include <string> 10 #include <string>
11 #include <utility>
9 #include <vector> 12 #include <vector>
10 #include <queue>
11 #include <utility>
12 13
13 #include "base/basictypes.h" 14 #include "base/basictypes.h"
15 #include "base/file_path.h"
14 #include "base/hash_tables.h" 16 #include "base/hash_tables.h"
15 #include "base/ref_counted.h" 17 #include "base/ref_counted.h"
16 #include "base/time.h" 18 #include "base/time.h"
17 #include "chrome/common/pref_member.h" 19 #include "chrome/common/pref_member.h"
18 #include "chrome/browser/download/save_item.h" 20 #include "chrome/browser/download/save_item.h"
19 #include "chrome/browser/download/save_types.h" 21 #include "chrome/browser/download/save_types.h"
20 #include "chrome/browser/renderer_host/render_view_host_delegate.h" 22 #include "chrome/browser/renderer_host/render_view_host_delegate.h"
21 23
22 class SaveFileManager; 24 class SaveFileManager;
23 class SavePackage; 25 class SavePackage;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 // Waiting for html DOM data sent from render process. 72 // Waiting for html DOM data sent from render process.
71 HTML_DATA, 73 HTML_DATA,
72 // Saving page finished successfully. 74 // Saving page finished successfully.
73 SUCCESSFUL, 75 SUCCESSFUL,
74 // Failed to save page. 76 // Failed to save page.
75 FAILED 77 FAILED
76 }; 78 };
77 79
78 SavePackage(WebContents* web_content, 80 SavePackage(WebContents* web_content,
79 SavePackageType save_type, 81 SavePackageType save_type,
80 const std::wstring& file_full_path, 82 const FilePath& file_full_path,
81 const std::wstring& directory_full_path); 83 const FilePath& directory_full_path);
82 84
83 ~SavePackage(); 85 ~SavePackage();
84 86
85 // Initialize the SavePackage. Returns true if it initializes properly. 87 // Initialize the SavePackage. Returns true if it initializes properly.
86 // Need to make sure that this method must be called in the UI thread because 88 // Need to make sure that this method must be called in the UI thread because
87 // using g_browser_process on a non-UI thread can cause crashes during 89 // using g_browser_process on a non-UI thread can cause crashes during
88 // shutdown. 90 // shutdown.
89 bool Init(); 91 bool Init();
90 92
91 void Cancel(bool user_action); 93 void Cancel(bool user_action);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 136
135 // Statics ------------------------------------------------------------------- 137 // Statics -------------------------------------------------------------------
136 138
137 // Used to disable prompting the user for a directory/filename of the saved 139 // Used to disable prompting the user for a directory/filename of the saved
138 // web page. This is available for testing. 140 // web page. This is available for testing.
139 static void SetShouldPromptUser(bool should_prompt); 141 static void SetShouldPromptUser(bool should_prompt);
140 142
141 // Helper function for preparing suggested name for the SaveAs Dialog. The 143 // Helper function for preparing suggested name for the SaveAs Dialog. The
142 // suggested name is composed of the default save path and the web document's 144 // suggested name is composed of the default save path and the web document's
143 // title. 145 // title.
144 static std::wstring GetSuggestNameForSaveAs(PrefService* prefs, 146 static FilePath GetSuggestNameForSaveAs(PrefService* prefs,
145 const std::wstring& name); 147 const FilePath& name);
146 148
147 // This structure is for storing parameters which we will use to create 149 // This structure is for storing parameters which we will use to create
148 // a SavePackage object later. 150 // a SavePackage object later.
149 struct SavePackageParam { 151 struct SavePackageParam {
150 // MIME type of current tab contents. 152 // MIME type of current tab contents.
151 const std::string& current_tab_mime_type; 153 const std::string& current_tab_mime_type;
152 // Pointer to preference service. 154 // Pointer to preference service.
153 PrefService* prefs; 155 PrefService* prefs;
154 // Type about saving page as only-html or complete-html. 156 // Type about saving page as only-html or complete-html.
155 SavePackageType save_type; 157 SavePackageType save_type;
156 // File path for main html file. 158 // File path for main html file.
157 std::wstring saved_main_file_path; 159 FilePath saved_main_file_path;
158 // Directory path for saving sub resources and sub html frames. 160 // Directory path for saving sub resources and sub html frames.
159 std::wstring dir; 161 FilePath dir;
160 162
161 SavePackageParam(const std::string& mime_type) 163 SavePackageParam(const std::string& mime_type)
162 : current_tab_mime_type(mime_type) { } 164 : current_tab_mime_type(mime_type) { }
163 }; 165 };
164 static bool GetSaveInfo(const std::wstring& suggest_name, 166 static bool GetSaveInfo(const FilePath& suggest_name,
165 HWND container_hwnd, 167 HWND container_hwnd,
166 SavePackageParam* param, 168 SavePackageParam* param,
167 DownloadManager* download_manager); 169 DownloadManager* download_manager);
168 170
169 // File name is consist of pure file name, dot and file extension name. File
170 // name might has no dot and file extension, or has multiple dot inside file
171 // name. The dot, which separates the pure file name and file extension name,
172 // is last dot in the file name. If the file name matches following patterns:
173 // base_file_name(ordinal_number) or base_file_name(ordinal_number).extension,
174 // this function will return true and get the base file name part and
175 // ordinal_number part via output parameters. The |file_ordinal_number| could
176 // be empty if there is no content in ordinal_number part. If the file name
177 // does not match the pattern or the ordinal_number part has non-digit
178 // content, just return false.
179 static bool GetBaseFileNameAndFileOrdinalNumber(
180 const std::wstring& file_name,
181 std::wstring* base_file_name,
182 std::wstring* file_ordinal_number);
183
184 // Check whether we can do the saving page operation for the specified URL. 171 // Check whether we can do the saving page operation for the specified URL.
185 static bool IsSavableURL(const GURL& url); 172 static bool IsSavableURL(const GURL& url);
186 173
187 // Check whether we can do the saving page operation for the contents which 174 // Check whether we can do the saving page operation for the contents which
188 // have the specified MIME type. 175 // have the specified MIME type.
189 static bool IsSavableContents(const std::string& contents_mime_type); 176 static bool IsSavableContents(const std::string& contents_mime_type);
190 177
191 // Check whether we can save page as complete-HTML for the contents which 178 // Check whether we can save page as complete-HTML for the contents which
192 // have specified a MIME type. Now only contents which have the MIME type 179 // have specified a MIME type. Now only contents which have the MIME type
193 // "text/html" can be saved as complete-HTML. 180 // "text/html" can be saved as complete-HTML.
194 static bool CanSaveAsComplete(const std::string& contents_mime_type); 181 static bool CanSaveAsComplete(const std::string& contents_mime_type);
195 182
196 // File name is considered being consist of pure file name, dot and file 183 // File name is considered being consist of pure file name, dot and file
197 // extension name. File name might has no dot and file extension, or has 184 // extension name. File name might has no dot and file extension, or has
198 // multiple dot inside file name. The dot, which separates the pure file 185 // multiple dot inside file name. The dot, which separates the pure file
199 // name and file extension name, is last dot in the whole file name. 186 // name and file extension name, is last dot in the whole file name.
200 // This function is for making sure the length of specified file path is not 187 // This function is for making sure the length of specified file path is not
201 // great than the specified maximum length of file path and getting safe pure 188 // great than the specified maximum length of file path and getting safe pure
202 // file name part if the input pure file name is too long. 189 // file name part if the input pure file name is too long.
203 // The parameter |dir_path| specifies directory part of the specified 190 // The parameter |dir_path| specifies directory part of the specified
204 // file path. The parameter |file_name_ext| specifies file extension 191 // file path. The parameter |file_name_ext| specifies file extension
205 // name part of the specified file path (including start dot). The parameter 192 // name part of the specified file path (including start dot). The parameter
206 // |max_file_path_len| specifies maximum length of the specified file path. 193 // |max_file_path_len| specifies maximum length of the specified file path.
207 // The parameter |pure_file_name| input pure file name part of the specified 194 // The parameter |pure_file_name| input pure file name part of the specified
208 // file path. If the length of specified file path is great than 195 // file path. If the length of specified file path is great than
209 // |max_file_path_len|, the |pure_file_name| will output new pure file name 196 // |max_file_path_len|, the |pure_file_name| will output new pure file name
210 // part for making sure the length of specified file path is less than 197 // part for making sure the length of specified file path is less than
211 // specified maximum length of file path. Return false if the function can 198 // specified maximum length of file path. Return false if the function can
212 // not get a safe pure file name, otherwise it returns true. 199 // not get a safe pure file name, otherwise it returns true.
213 static bool GetSafePureFileName(const std::wstring& dir_path, 200 static bool GetSafePureFileName(const FilePath& dir_path,
214 const std::wstring& file_name_ext, 201 const FilePath::StringType& file_name_ext,
215 uint32 max_file_path_len, 202 uint32 max_file_path_len,
216 std::wstring* pure_file_name); 203 FilePath::StringType* pure_file_name);
217 204
218 private: 205 private:
219 // For testing. 206 // For testing only.
220 friend class SavePackageTest; 207 SavePackage(const FilePath::CharType* file_full_path,
221 SavePackage(const wchar_t* file_full_path, 208 const FilePath::CharType* directory_full_path);
222 const wchar_t* directory_full_path);
223 209
224 void Stop(); 210 void Stop();
225 void CheckFinish(); 211 void CheckFinish();
226 void SaveNextFile(bool process_all_remainder_items); 212 void SaveNextFile(bool process_all_remainder_items);
227 void DoSavingProcess(); 213 void DoSavingProcess();
228 214
229 // Create a file name based on the response from the server. 215 // Create a file name based on the response from the server.
230 bool GenerateFilename(const std::string& disposition, 216 bool GenerateFilename(const std::string& disposition,
231 const std::wstring& url, 217 const GURL& url,
232 bool need_html_ext, 218 bool need_html_ext,
233 std::wstring* generated_name); 219 FilePath::StringType* generated_name);
234 220
235 // Get all savable resource links from current web page, include main 221 // Get all savable resource links from current web page, include main
236 // frame and sub-frame. 222 // frame and sub-frame.
237 void GetAllSavableResourceLinksForCurrentPage(); 223 void GetAllSavableResourceLinksForCurrentPage();
238 // Get html data by serializing all frames of current page with lists 224 // Get html data by serializing all frames of current page with lists
239 // which contain all resource links that have local copy. 225 // which contain all resource links that have local copy.
240 void GetSerializedHtmlDataForCurrentPageWithLocalLinks(); 226 void GetSerializedHtmlDataForCurrentPageWithLocalLinks();
241 227
242 SaveItem* LookupItemInProcessBySaveId(int32 save_id); 228 SaveItem* LookupItemInProcessBySaveId(int32 save_id);
243 void PutInProgressItemToSavedMap(SaveItem* save_item); 229 void PutInProgressItemToSavedMap(SaveItem* save_item);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 SaveFileManager* file_manager_; 262 SaveFileManager* file_manager_;
277 263
278 WebContents* web_contents_; 264 WebContents* web_contents_;
279 265
280 // We use a fake DownloadItem here in order to reuse the DownloadItemView. 266 // We use a fake DownloadItem here in order to reuse the DownloadItemView.
281 // This class owns the pointer. 267 // This class owns the pointer.
282 DownloadItem* download_; 268 DownloadItem* download_;
283 269
284 // The URL of the page the user wants to save. 270 // The URL of the page the user wants to save.
285 std::wstring page_url_; 271 std::wstring page_url_;
286 std::wstring saved_main_file_path_; 272 FilePath saved_main_file_path_;
287 std::wstring saved_main_directory_path_; 273 FilePath saved_main_directory_path_;
288 274
289 // Indicates whether the actual saving job is finishing or not. 275 // Indicates whether the actual saving job is finishing or not.
290 bool finished_; 276 bool finished_;
291 277
292 // Indicates whether user canceled the saving job. 278 // Indicates whether user canceled the saving job.
293 bool user_canceled_; 279 bool user_canceled_;
294 280
295 // Indicates whether user get disk error. 281 // Indicates whether user get disk error.
296 bool disk_error_occurred_; 282 bool disk_error_occurred_;
297 283
298 // Type about saving page as only-html or complete-html. 284 // Type about saving page as only-html or complete-html.
299 SavePackageType save_type_; 285 SavePackageType save_type_;
300 286
301 // Number of all need to be saved resources. 287 // Number of all need to be saved resources.
302 int all_save_items_count_; 288 int all_save_items_count_;
303 289
304 typedef base::hash_set<std::wstring> FileNameSet; 290 typedef base::hash_set<std::wstring> FileNameSet;
305 // This set is used to eliminate duplicated file names in saving directory. 291 // This set is used to eliminate duplicated file names in saving directory.
306 FileNameSet file_name_set_; 292 FileNameSet file_name_set_;
307 293
308 typedef base::hash_map<std::wstring, uint32> FileNameCountMap; 294 typedef base::hash_map<FilePath::StringType, uint32> FileNameCountMap;
309 // This map is used to track serial number for specified filename. 295 // This map is used to track serial number for specified filename.
310 FileNameCountMap file_name_count_map_; 296 FileNameCountMap file_name_count_map_;
311 297
312 // Indicates current waiting state when SavePackage try to get something 298 // Indicates current waiting state when SavePackage try to get something
313 // from outside. 299 // from outside.
314 WaitState wait_state_; 300 WaitState wait_state_;
315 301
316 // Unique id for this SavePackage. 302 // Unique id for this SavePackage.
317 const int tab_id_; 303 const int tab_id_;
318 304
305 friend class SavePackageTest;
319 DISALLOW_COPY_AND_ASSIGN(SavePackage); 306 DISALLOW_COPY_AND_ASSIGN(SavePackage);
320 }; 307 };
321 308
322 #endif // CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_ 309 #endif // CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_H_
310
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/download/save_package.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698