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

Side by Side Diff: chrome/browser/dom_ui/filebrowse_ui.cc

Issue 5710002: Create base::WorkerPoolJob. Use it for HostResolverImpl and DirectoryLister. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address cancellation. Created 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/command_line.h" 10 #include "base/command_line.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 86
87 private: 87 private:
88 ~FileBrowseUIHTMLSource() {} 88 ~FileBrowseUIHTMLSource() {}
89 89
90 DISALLOW_COPY_AND_ASSIGN(FileBrowseUIHTMLSource); 90 DISALLOW_COPY_AND_ASSIGN(FileBrowseUIHTMLSource);
91 }; 91 };
92 92
93 class TaskProxy; 93 class TaskProxy;
94 94
95 // The handler for Javascript messages related to the "filebrowse" view. 95 // The handler for Javascript messages related to the "filebrowse" view.
96 class FilebrowseHandler : public net::DirectoryLister::DirectoryListerDelegate, 96 class FilebrowseHandler : public net::DirectoryLister::Delegate,
97 public DOMMessageHandler, 97 public DOMMessageHandler,
98 #if defined(OS_CHROMEOS) 98 #if defined(OS_CHROMEOS)
99 public chromeos::MountLibrary::Observer, 99 public chromeos::MountLibrary::Observer,
100 #endif 100 #endif
101 public base::SupportsWeakPtr<FilebrowseHandler>, 101 public base::SupportsWeakPtr<FilebrowseHandler>,
102 public URLFetcher::Delegate, 102 public URLFetcher::Delegate,
103 public DownloadManager::Observer, 103 public DownloadManager::Observer,
104 public DownloadItem::Observer { 104 public DownloadItem::Observer {
105 public: 105 public:
106 FilebrowseHandler(); 106 FilebrowseHandler();
107 virtual ~FilebrowseHandler(); 107 virtual ~FilebrowseHandler();
108 108
109 // Init work after Attach. 109 // Init work after Attach.
110 void Init(); 110 void Init();
111 111
112 // DirectoryLister::DirectoryListerDelegate methods: 112 // DirectoryLister::Delegate methods:
113 virtual void OnListFile( 113 virtual void OnListFile(const net::DirectoryLister::Data& data);
114 const net::DirectoryLister::DirectoryListerData& data);
115 virtual void OnListDone(int error); 114 virtual void OnListDone(int error);
116 115
117 // DOMMessageHandler implementation. 116 // DOMMessageHandler implementation.
118 virtual DOMMessageHandler* Attach(DOMUI* dom_ui); 117 virtual DOMMessageHandler* Attach(DOMUI* dom_ui);
119 virtual void RegisterMessages(); 118 virtual void RegisterMessages();
120 119
121 #if defined(OS_CHROMEOS) 120 #if defined(OS_CHROMEOS)
122 void MountChanged(chromeos::MountLibrary* obj, 121 void MountChanged(chromeos::MountLibrary* obj,
123 chromeos::MountEventType evt, 122 chromeos::MountEventType evt,
124 const std::string& path); 123 const std::string& path);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 void SendNewDownload(DownloadItem* download); 206 void SendNewDownload(DownloadItem* download);
208 207
209 scoped_ptr<ListValue> filelist_value_; 208 scoped_ptr<ListValue> filelist_value_;
210 FilePath currentpath_; 209 FilePath currentpath_;
211 Profile* profile_; 210 Profile* profile_;
212 TabContents* tab_contents_; 211 TabContents* tab_contents_;
213 std::string current_file_contents_; 212 std::string current_file_contents_;
214 std::string current_file_uploaded_; 213 std::string current_file_uploaded_;
215 int upload_response_code_; 214 int upload_response_code_;
216 TaskProxy* current_task_; 215 TaskProxy* current_task_;
217 scoped_refptr<net::DirectoryLister> lister_; 216 scoped_ptr<net::DirectoryLister> lister_;
218 bool is_refresh_; 217 bool is_refresh_;
219 scoped_ptr<URLFetcher> fetch_; 218 scoped_ptr<URLFetcher> fetch_;
220 219
221 DownloadManager* download_manager_; 220 DownloadManager* download_manager_;
222 typedef std::vector<DownloadItem*> DownloadList; 221 typedef std::vector<DownloadItem*> DownloadList;
223 DownloadList active_download_items_; 222 DownloadList active_download_items_;
224 DownloadList download_items_; 223 DownloadList download_items_;
225 bool got_first_download_list_; 224 bool got_first_download_list_;
226 DISALLOW_COPY_AND_ASSIGN(FilebrowseHandler); 225 DISALLOW_COPY_AND_ASSIGN(FilebrowseHandler);
227 }; 226 };
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 // FilebrowseHandler 377 // FilebrowseHandler
379 // 378 //
380 //////////////////////////////////////////////////////////////////////////////// 379 ////////////////////////////////////////////////////////////////////////////////
381 FilebrowseHandler::FilebrowseHandler() 380 FilebrowseHandler::FilebrowseHandler()
382 : profile_(NULL), 381 : profile_(NULL),
383 tab_contents_(NULL), 382 tab_contents_(NULL),
384 is_refresh_(false), 383 is_refresh_(false),
385 fetch_(NULL), 384 fetch_(NULL),
386 download_manager_(NULL), 385 download_manager_(NULL),
387 got_first_download_list_(false) { 386 got_first_download_list_(false) {
388 lister_ = NULL;
389 #if defined(OS_CHROMEOS) 387 #if defined(OS_CHROMEOS)
390 chromeos::MountLibrary* lib = 388 chromeos::MountLibrary* lib =
391 chromeos::CrosLibrary::Get()->GetMountLibrary(); 389 chromeos::CrosLibrary::Get()->GetMountLibrary();
392 lib->AddObserver(this); 390 lib->AddObserver(this);
393 #endif 391 #endif
394 } 392 }
395 393
396 FilebrowseHandler::~FilebrowseHandler() { 394 FilebrowseHandler::~FilebrowseHandler() {
397 #if defined(OS_CHROMEOS) 395 #if defined(OS_CHROMEOS)
398 chromeos::MountLibrary* lib = 396 chromeos::MountLibrary* lib =
399 chromeos::CrosLibrary::Get()->GetMountLibrary(); 397 chromeos::CrosLibrary::Get()->GetMountLibrary();
400 lib->RemoveObserver(this); 398 lib->RemoveObserver(this);
401 #endif 399 #endif
402 if (lister_.get()) {
403 lister_->Cancel();
404 lister_->set_delegate(NULL);
405 }
406 400
407 ClearDownloadItems(); 401 ClearDownloadItems();
408 download_manager_->RemoveObserver(this); 402 download_manager_->RemoveObserver(this);
409 URLFetcher* fetch = fetch_.release(); 403 URLFetcher* fetch = fetch_.release();
410 if (fetch) { 404 if (fetch) {
411 TaskProxy* task = new TaskProxy(AsWeakPtr(), currentpath_); 405 TaskProxy* task = new TaskProxy(AsWeakPtr(), currentpath_);
412 task->AddRef(); 406 task->AddRef();
413 BrowserThread::PostTask( 407 BrowserThread::PostTask(
414 BrowserThread::FILE, FROM_HERE, 408 BrowserThread::FILE, FROM_HERE,
415 NewRunnableMethod( 409 NewRunnableMethod(
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 BrowserThread::FILE, FROM_HERE, 800 BrowserThread::FILE, FROM_HERE,
807 NewRunnableMethod( 801 NewRunnableMethod(
808 task, &TaskProxy::ReadInFileProxy)); 802 task, &TaskProxy::ReadInFileProxy));
809 #endif 803 #endif
810 } 804 }
811 805
812 void FilebrowseHandler::GetChildrenForPath(FilePath& path, bool is_refresh) { 806 void FilebrowseHandler::GetChildrenForPath(FilePath& path, bool is_refresh) {
813 filelist_value_.reset(new ListValue()); 807 filelist_value_.reset(new ListValue());
814 currentpath_ = path; 808 currentpath_ = path;
815 809
816 if (lister_.get()) { 810 lister_.reset();
817 lister_->Cancel();
818 lister_->set_delegate(NULL);
819 lister_ = NULL;
820 }
821
822 is_refresh_ = is_refresh; 811 is_refresh_ = is_refresh;
823 812
824 #if defined(OS_CHROMEOS) 813 #if defined(OS_CHROMEOS)
825 // Don't allow listing files in inaccessible dirs. 814 // Don't allow listing files in inaccessible dirs.
826 if (net::URLRequestFileJob::AccessDisabled(path)) 815 if (net::URLRequestFileJob::AccessDisabled(path))
827 return; 816 return;
828 #endif // OS_CHROMEOS 817 #endif // OS_CHROMEOS
829 818
830 FilePath default_download_path; 819 FilePath default_download_path;
831 if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, 820 if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS,
832 &default_download_path)) { 821 &default_download_path)) {
833 NOTREACHED(); 822 NOTREACHED();
834 } 823 }
835 if (currentpath_ == default_download_path) { 824 if (currentpath_ == default_download_path) {
836 lister_ = new net::DirectoryLister(currentpath_, 825 lister_.reset(new net::DirectoryLister(currentpath_,
837 false, 826 false,
838 net::DirectoryLister::DATE, 827 net::DirectoryLister::DATE,
839 this); 828 this));
840 } else { 829 } else {
841 lister_ = new net::DirectoryLister(currentpath_, this); 830 lister_.reset(new net::DirectoryLister(currentpath_, this));
842 } 831 }
843 lister_->Start(); 832 lister_->Start();
844 } 833 }
845 834
846 void FilebrowseHandler::HandleGetChildren(const ListValue* args) { 835 void FilebrowseHandler::HandleGetChildren(const ListValue* args) {
847 #if defined(OS_CHROMEOS) 836 #if defined(OS_CHROMEOS)
848 std::string path = WideToUTF8(ExtractStringValue(args)); 837 std::string path = WideToUTF8(ExtractStringValue(args));
849 FilePath currentpath(path); 838 FilePath currentpath(path);
850 filelist_value_.reset(new ListValue()); 839 filelist_value_.reset(new ListValue());
851 840
852 GetChildrenForPath(currentpath, false); 841 GetChildrenForPath(currentpath, false);
853 #endif 842 #endif
854 } 843 }
855 844
856 void FilebrowseHandler::OnListFile( 845 void FilebrowseHandler::OnListFile(const net::DirectoryLister::Data& data) {
857 const net::DirectoryLister::DirectoryListerData& data) {
858 #if defined(OS_WIN) 846 #if defined(OS_WIN)
859 if (data.info.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) { 847 if (data.info.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) {
860 return; 848 return;
861 } 849 }
862 #elif defined(OS_POSIX) 850 #elif defined(OS_POSIX)
863 if (data.info.filename[0] == '.') { 851 if (data.info.filename[0] == '.') {
864 return; 852 return;
865 } 853 }
866 #endif 854 #endif
867 855
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 } 1192 }
1205 } 1193 }
1206 1194
1207 return NULL; 1195 return NULL;
1208 } 1196 }
1209 1197
1210 const int FileBrowseUI::kPopupWidth = 250; 1198 const int FileBrowseUI::kPopupWidth = 250;
1211 const int FileBrowseUI::kPopupHeight = 300; 1199 const int FileBrowseUI::kPopupHeight = 300;
1212 const int FileBrowseUI::kSmallPopupWidth = 250; 1200 const int FileBrowseUI::kSmallPopupWidth = 250;
1213 const int FileBrowseUI::kSmallPopupHeight = 50; 1201 const int FileBrowseUI::kSmallPopupHeight = 50;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698