OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/dom_ui/filebrowse_ui.h" | 5 #include "chrome/browser/dom_ui/filebrowse_ui.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 | 48 |
49 #if defined(OS_CHROMEOS) | 49 #if defined(OS_CHROMEOS) |
50 #include "chrome/browser/chromeos/cros/cros_library.h" | 50 #include "chrome/browser/chromeos/cros/cros_library.h" |
51 #include "chrome/browser/chromeos/cros/mount_library.h" | 51 #include "chrome/browser/chromeos/cros/mount_library.h" |
52 #include "chrome/browser/chromeos/login/user_manager.h" | 52 #include "chrome/browser/chromeos/login/user_manager.h" |
53 #endif | 53 #endif |
54 | 54 |
55 // Maximum number of search results to return in a given search. We should | 55 // Maximum number of search results to return in a given search. We should |
56 // eventually remove this. | 56 // eventually remove this. |
57 static const int kMaxSearchResults = 100; | 57 static const int kMaxSearchResults = 100; |
58 static const std::wstring kPropertyPath = L"path"; | 58 static const char kPropertyPath[] = "path"; |
59 static const std::wstring kPropertyTitle = L"title"; | 59 static const char kPropertyTitle[] = "title"; |
60 static const std::wstring kPropertyDirectory = L"isDirectory"; | 60 static const char kPropertyDirectory[] = "isDirectory"; |
61 static const std::string kPicasawebUserPrefix = | 61 static const char kPicasawebUserPrefix[] = |
62 "http://picasaweb.google.com/data/feed/api/user/"; | 62 "http://picasaweb.google.com/data/feed/api/user/"; |
63 static const std::string kPicasawebDefault = "/albumid/default"; | 63 static const char kPicasawebDefault[] = "/albumid/default"; |
64 static const std::string kPicasawebDropBox = "/home"; | 64 static const char kPicasawebDropBox[] = "/home"; |
65 static const std::string kPicasawebBaseUrl = "http://picasaweb.google.com/"; | 65 static const char kPicasawebBaseUrl[] = "http://picasaweb.google.com/"; |
66 static const std::string kMediaPath = "/media"; | 66 static const char kMediaPath[] = "/media"; |
67 static const char* kFilebrowseURLHash = "chrome://filebrowse#"; | 67 static const char kFilebrowseURLHash[] = "chrome://filebrowse#"; |
68 static const int kPopupLeft = 0; | 68 static const int kPopupLeft = 0; |
69 static const int kPopupTop = 0; | 69 static const int kPopupTop = 0; |
70 | 70 |
71 class FileBrowseUIHTMLSource : public ChromeURLDataManager::DataSource { | 71 class FileBrowseUIHTMLSource : public ChromeURLDataManager::DataSource { |
72 public: | 72 public: |
73 FileBrowseUIHTMLSource(); | 73 FileBrowseUIHTMLSource(); |
74 | 74 |
75 // Called when the network layer has requested a resource underneath | 75 // Called when the network layer has requested a resource underneath |
76 // the path we registered. | 76 // the path we registered. |
77 virtual void StartDataRequest(const std::string& path, | 77 virtual void StartDataRequest(const std::string& path, |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 FileBrowseUIHTMLSource::FileBrowseUIHTMLSource() | 262 FileBrowseUIHTMLSource::FileBrowseUIHTMLSource() |
263 : DataSource(chrome::kChromeUIFileBrowseHost, MessageLoop::current()) { | 263 : DataSource(chrome::kChromeUIFileBrowseHost, MessageLoop::current()) { |
264 } | 264 } |
265 | 265 |
266 void FileBrowseUIHTMLSource::StartDataRequest(const std::string& path, | 266 void FileBrowseUIHTMLSource::StartDataRequest(const std::string& path, |
267 bool is_off_the_record, | 267 bool is_off_the_record, |
268 int request_id) { | 268 int request_id) { |
269 DictionaryValue localized_strings; | 269 DictionaryValue localized_strings; |
270 // TODO(dhg): Add stirings to localized strings, also add more strings | 270 // TODO(dhg): Add stirings to localized strings, also add more strings |
271 // that are currently hardcoded. | 271 // that are currently hardcoded. |
272 localized_strings.SetString(L"title", | 272 localized_strings.SetString("title", |
273 l10n_util::GetString(IDS_FILEBROWSER_TITLE)); | 273 l10n_util::GetStringUTF16(IDS_FILEBROWSER_TITLE)); |
274 localized_strings.SetString(L"pause", | 274 localized_strings.SetString("pause", |
275 l10n_util::GetString(IDS_FILEBROWSER_PAUSE)); | 275 l10n_util::GetStringUTF16(IDS_FILEBROWSER_PAUSE)); |
276 localized_strings.SetString(L"resume", | 276 localized_strings.SetString("resume", |
277 l10n_util::GetString(IDS_FILEBROWSER_RESUME)); | 277 l10n_util::GetStringUTF16(IDS_FILEBROWSER_RESUME)); |
278 localized_strings.SetString(L"scanning", | 278 localized_strings.SetString("scanning", |
279 l10n_util::GetString(IDS_FILEBROWSER_SCANNING)); | 279 l10n_util::GetStringUTF16(IDS_FILEBROWSER_SCANNING)); |
280 localized_strings.SetString(L"confirmdelete", | 280 localized_strings.SetString("confirmdelete", |
281 l10n_util::GetString(IDS_FILEBROWSER_CONFIRM_DELETE)); | 281 l10n_util::GetStringUTF16(IDS_FILEBROWSER_CONFIRM_DELETE)); |
282 localized_strings.SetString(L"confirmyes", | 282 localized_strings.SetString("confirmyes", |
283 l10n_util::GetString(IDS_FILEBROWSER_CONFIRM_YES)); | 283 l10n_util::GetStringUTF16(IDS_FILEBROWSER_CONFIRM_YES)); |
284 localized_strings.SetString(L"confirmcancel", | 284 localized_strings.SetString("confirmcancel", |
285 l10n_util::GetString(IDS_FILEBROWSER_CONFIRM_CANCEL)); | 285 l10n_util::GetStringUTF16(IDS_FILEBROWSER_CONFIRM_CANCEL)); |
286 localized_strings.SetString(L"allowdownload", | 286 localized_strings.SetString("allowdownload", |
287 l10n_util::GetString(IDS_FILEBROWSER_CONFIRM_DOWNLOAD)); | 287 l10n_util::GetStringUTF16(IDS_FILEBROWSER_CONFIRM_DOWNLOAD)); |
288 localized_strings.SetString(L"filenameprompt", | 288 localized_strings.SetString("filenameprompt", |
289 l10n_util::GetString(IDS_FILEBROWSER_PROMPT_FILENAME)); | 289 l10n_util::GetStringUTF16(IDS_FILEBROWSER_PROMPT_FILENAME)); |
290 localized_strings.SetString(L"save", | 290 localized_strings.SetString("save", |
291 l10n_util::GetString(IDS_FILEBROWSER_SAVE)); | 291 l10n_util::GetStringUTF16(IDS_FILEBROWSER_SAVE)); |
292 localized_strings.SetString(L"newfolder", | 292 localized_strings.SetString("newfolder", |
293 l10n_util::GetString(IDS_FILEBROWSER_NEW_FOLDER)); | 293 l10n_util::GetStringUTF16(IDS_FILEBROWSER_NEW_FOLDER)); |
294 localized_strings.SetString(L"open", | 294 localized_strings.SetString("open", |
295 l10n_util::GetString(IDS_FILEBROWSER_OPEN)); | 295 l10n_util::GetStringUTF16(IDS_FILEBROWSER_OPEN)); |
296 localized_strings.SetString(L"picasaweb", | 296 localized_strings.SetString("picasaweb", |
297 l10n_util::GetString(IDS_FILEBROWSER_UPLOAD_PICASAWEB)); | 297 l10n_util::GetStringUTF16(IDS_FILEBROWSER_UPLOAD_PICASAWEB)); |
298 localized_strings.SetString(L"flickr", | 298 localized_strings.SetString("flickr", |
299 l10n_util::GetString(IDS_FILEBROWSER_UPLOAD_FLICKR)); | 299 l10n_util::GetStringUTF16(IDS_FILEBROWSER_UPLOAD_FLICKR)); |
300 localized_strings.SetString(L"email", | 300 localized_strings.SetString("email", |
301 l10n_util::GetString(IDS_FILEBROWSER_UPLOAD_EMAIL)); | 301 l10n_util::GetStringUTF16(IDS_FILEBROWSER_UPLOAD_EMAIL)); |
302 localized_strings.SetString(L"delete", | 302 localized_strings.SetString("delete", |
303 l10n_util::GetString(IDS_FILEBROWSER_DELETE)); | 303 l10n_util::GetStringUTF16(IDS_FILEBROWSER_DELETE)); |
304 localized_strings.SetString(L"enqueue", | 304 localized_strings.SetString("enqueue", |
305 l10n_util::GetString(IDS_FILEBROWSER_ENQUEUE)); | 305 l10n_util::GetStringUTF16(IDS_FILEBROWSER_ENQUEUE)); |
306 localized_strings.SetString(L"mediapath", kMediaPath); | 306 localized_strings.SetString("mediapath", kMediaPath); |
307 FilePath default_download_path; | 307 FilePath default_download_path; |
308 if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, | 308 if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, |
309 &default_download_path)) { | 309 &default_download_path)) { |
310 NOTREACHED(); | 310 NOTREACHED(); |
311 } | 311 } |
312 localized_strings.SetString(L"downloadpath", default_download_path.value()); | 312 // TODO(viettrungluu): this is wrong -- FilePath's need not be Unicode. |
313 localized_strings.SetString(L"error_unknown_file_type", | 313 localized_strings.SetString("downloadpath", default_download_path.value()); |
314 l10n_util::GetString(IDS_FILEBROWSER_ERROR_UNKNOWN_FILE_TYPE)); | 314 localized_strings.SetString("error_unknown_file_type", |
| 315 l10n_util::GetStringUTF16(IDS_FILEBROWSER_ERROR_UNKNOWN_FILE_TYPE)); |
315 SetFontAndTextDirection(&localized_strings); | 316 SetFontAndTextDirection(&localized_strings); |
316 | 317 |
317 static const base::StringPiece filebrowse_html( | 318 static const base::StringPiece filebrowse_html( |
318 ResourceBundle::GetSharedInstance().GetRawDataResource( | 319 ResourceBundle::GetSharedInstance().GetRawDataResource( |
319 IDR_FILEBROWSE_HTML)); | 320 IDR_FILEBROWSE_HTML)); |
320 const std::string full_html = jstemplate_builder::GetI18nTemplateHtml( | 321 const std::string full_html = jstemplate_builder::GetI18nTemplateHtml( |
321 filebrowse_html, &localized_strings); | 322 filebrowse_html, &localized_strings); |
322 | 323 |
323 scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); | 324 scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); |
324 html_bytes->data.resize(full_html.size()); | 325 html_bytes->data.resize(full_html.size()); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 | 441 |
441 void FilebrowseHandler::FireDeleteComplete(const FilePath& path) { | 442 void FilebrowseHandler::FireDeleteComplete(const FilePath& path) { |
442 // We notify the UI by telling it to refresh its contents. | 443 // We notify the UI by telling it to refresh its contents. |
443 FilePath dir_path = path.DirName(); | 444 FilePath dir_path = path.DirName(); |
444 GetChildrenForPath(dir_path, true); | 445 GetChildrenForPath(dir_path, true); |
445 }; | 446 }; |
446 | 447 |
447 void FilebrowseHandler::FireUploadComplete() { | 448 void FilebrowseHandler::FireUploadComplete() { |
448 #if defined(OS_CHROMEOS) | 449 #if defined(OS_CHROMEOS) |
449 DictionaryValue info_value; | 450 DictionaryValue info_value; |
450 info_value.SetString(L"path", current_file_uploaded_); | 451 info_value.SetString("path", current_file_uploaded_); |
451 | 452 |
452 std::string username; | 453 std::string username; |
453 chromeos::UserManager* user_man = chromeos::UserManager::Get(); | 454 chromeos::UserManager* user_man = chromeos::UserManager::Get(); |
454 username = user_man->logged_in_user().email(); | 455 username = user_man->logged_in_user().email(); |
455 | 456 |
456 if (username.empty()) { | 457 if (username.empty()) { |
457 LOG(ERROR) << "Unable to get username"; | 458 LOG(ERROR) << "Unable to get username"; |
458 return; | 459 return; |
459 } | 460 } |
460 int location = username.find_first_of('@',0); | 461 int location = username.find_first_of('@',0); |
461 if (location <= 0) { | 462 if (location <= 0) { |
462 LOG(ERROR) << "Username not formatted correctly"; | 463 LOG(ERROR) << "Username not formatted correctly"; |
463 return; | 464 return; |
464 } | 465 } |
465 username = username.erase(username.find_first_of('@',0)); | 466 username = username.erase(username.find_first_of('@',0)); |
466 std::string picture_url; | 467 std::string picture_url = kPicasawebBaseUrl; |
467 picture_url = kPicasawebBaseUrl; | |
468 picture_url += username; | 468 picture_url += username; |
469 picture_url += kPicasawebDropBox; | 469 picture_url += kPicasawebDropBox; |
470 info_value.SetString(L"url", picture_url); | 470 info_value.SetString("url", picture_url); |
471 info_value.SetInteger(L"status_code", upload_response_code_); | 471 info_value.SetInteger("status_code", upload_response_code_); |
472 dom_ui_->CallJavascriptFunction(L"uploadComplete", info_value); | 472 dom_ui_->CallJavascriptFunction(L"uploadComplete", info_value); |
473 #endif | 473 #endif |
474 } | 474 } |
475 | 475 |
476 #if defined(OS_CHROMEOS) | 476 #if defined(OS_CHROMEOS) |
477 void FilebrowseHandler::MountChanged(chromeos::MountLibrary* obj, | 477 void FilebrowseHandler::MountChanged(chromeos::MountLibrary* obj, |
478 chromeos::MountEventType evt, | 478 chromeos::MountEventType evt, |
479 const std::string& path) { | 479 const std::string& path) { |
480 if (evt == chromeos::DISK_REMOVED || | 480 if (evt == chromeos::DISK_REMOVED || |
481 evt == chromeos::DISK_CHANGED) { | 481 evt == chromeos::DISK_CHANGED) { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 NOTREACHED(); | 537 NOTREACHED(); |
538 } | 538 } |
539 | 539 |
540 DictionaryValue* download_value = new DictionaryValue(); | 540 DictionaryValue* download_value = new DictionaryValue(); |
541 download_value->SetString(kPropertyPath, default_download_path.value()); | 541 download_value->SetString(kPropertyPath, default_download_path.value()); |
542 download_value->SetString(kPropertyTitle, "File Shelf"); | 542 download_value->SetString(kPropertyTitle, "File Shelf"); |
543 download_value->SetBoolean(kPropertyDirectory, true); | 543 download_value->SetBoolean(kPropertyDirectory, true); |
544 | 544 |
545 results_value.Append(download_value); | 545 results_value.Append(download_value); |
546 | 546 |
547 info_value.SetString(L"functionCall", "getRoots"); | 547 info_value.SetString("functionCall", "getRoots"); |
548 info_value.SetString(kPropertyPath, ""); | 548 info_value.SetString(kPropertyPath, ""); |
549 dom_ui_->CallJavascriptFunction(L"browseFileResult", | 549 dom_ui_->CallJavascriptFunction(L"browseFileResult", |
550 info_value, results_value); | 550 info_value, results_value); |
551 } | 551 } |
552 | 552 |
553 void FilebrowseHandler::HandleCreateNewFolder(const Value* value) { | 553 void FilebrowseHandler::HandleCreateNewFolder(const Value* value) { |
554 #if defined(OS_CHROMEOS) | 554 #if defined(OS_CHROMEOS) |
555 if (value && value->GetType() == Value::TYPE_LIST) { | 555 if (value && value->GetType() == Value::TYPE_LIST) { |
556 const ListValue* list_value = static_cast<const ListValue*>(value); | 556 const ListValue* list_value = static_cast<const ListValue*>(value); |
557 std::string path; | 557 std::string path; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 } | 626 } |
627 | 627 |
628 void FilebrowseHandler::HandleIsAdvancedEnabled(const Value* value) { | 628 void FilebrowseHandler::HandleIsAdvancedEnabled(const Value* value) { |
629 #if defined(OS_CHROMEOS) | 629 #if defined(OS_CHROMEOS) |
630 Profile* profile = BrowserList::GetLastActive()->profile(); | 630 Profile* profile = BrowserList::GetLastActive()->profile(); |
631 PrefService* pref_service = profile->GetPrefs(); | 631 PrefService* pref_service = profile->GetPrefs(); |
632 bool is_enabled = pref_service->GetBoolean( | 632 bool is_enabled = pref_service->GetBoolean( |
633 prefs::kLabsAdvancedFilesystemEnabled); | 633 prefs::kLabsAdvancedFilesystemEnabled); |
634 bool mp_enabled = pref_service->GetBoolean(prefs::kLabsMediaplayerEnabled); | 634 bool mp_enabled = pref_service->GetBoolean(prefs::kLabsMediaplayerEnabled); |
635 DictionaryValue info_value; | 635 DictionaryValue info_value; |
636 info_value.SetBoolean(L"enabled", is_enabled); | 636 info_value.SetBoolean("enabled", is_enabled); |
637 info_value.SetBoolean(L"mpEnabled", mp_enabled); | 637 info_value.SetBoolean("mpEnabled", mp_enabled); |
638 dom_ui_->CallJavascriptFunction(L"enabledResult", | 638 dom_ui_->CallJavascriptFunction(L"enabledResult", |
639 info_value); | 639 info_value); |
640 #endif | 640 #endif |
641 } | 641 } |
642 void FilebrowseHandler::HandleRefreshDirectory(const Value* value) { | 642 void FilebrowseHandler::HandleRefreshDirectory(const Value* value) { |
643 if (value && value->GetType() == Value::TYPE_LIST) { | 643 if (value && value->GetType() == Value::TYPE_LIST) { |
644 const ListValue* list_value = static_cast<const ListValue*>(value); | 644 const ListValue* list_value = static_cast<const ListValue*>(value); |
645 std::string path; | 645 std::string path; |
646 | 646 |
647 // Get path string. | 647 // Get path string. |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 file_value->SetString(kPropertyPath, | 940 file_value->SetString(kPropertyPath, |
941 currentpath_.Append(data.filename).value()); | 941 currentpath_.Append(data.filename).value()); |
942 file_value->SetBoolean(kPropertyDirectory, S_ISDIR(data.stat.st_mode)); | 942 file_value->SetBoolean(kPropertyDirectory, S_ISDIR(data.stat.st_mode)); |
943 #endif | 943 #endif |
944 filelist_value_->Append(file_value); | 944 filelist_value_->Append(file_value); |
945 } | 945 } |
946 | 946 |
947 void FilebrowseHandler::OnListDone(int error) { | 947 void FilebrowseHandler::OnListDone(int error) { |
948 DictionaryValue info_value; | 948 DictionaryValue info_value; |
949 if (is_refresh_) { | 949 if (is_refresh_) { |
950 info_value.SetString(L"functionCall", "refresh"); | 950 info_value.SetString("functionCall", "refresh"); |
951 } else { | 951 } else { |
952 info_value.SetString(L"functionCall", "getChildren"); | 952 info_value.SetString("functionCall", "getChildren"); |
953 } | 953 } |
954 info_value.SetString(kPropertyPath, currentpath_.value()); | 954 info_value.SetString(kPropertyPath, currentpath_.value()); |
955 dom_ui_->CallJavascriptFunction(L"browseFileResult", | 955 dom_ui_->CallJavascriptFunction(L"browseFileResult", |
956 info_value, *(filelist_value_.get())); | 956 info_value, *(filelist_value_.get())); |
957 SendCurrentDownloads(); | 957 SendCurrentDownloads(); |
958 } | 958 } |
959 | 959 |
960 void FilebrowseHandler::HandleGetMetadata(const Value* value) { | 960 void FilebrowseHandler::HandleGetMetadata(const Value* value) { |
961 } | 961 } |
962 | 962 |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 } | 1150 } |
1151 } | 1151 } |
1152 | 1152 |
1153 return NULL; | 1153 return NULL; |
1154 } | 1154 } |
1155 | 1155 |
1156 const int FileBrowseUI::kPopupWidth = 250; | 1156 const int FileBrowseUI::kPopupWidth = 250; |
1157 const int FileBrowseUI::kPopupHeight = 300; | 1157 const int FileBrowseUI::kPopupHeight = 300; |
1158 const int FileBrowseUI::kSmallPopupWidth = 250; | 1158 const int FileBrowseUI::kSmallPopupWidth = 250; |
1159 const int FileBrowseUI::kSmallPopupHeight = 50; | 1159 const int FileBrowseUI::kSmallPopupHeight = 50; |
OLD | NEW |