| OLD | NEW |
| 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/slideshow_ui.h" | 5 #include "chrome/browser/dom_ui/slideshow_ui.h" |
| 6 | 6 |
| 7 #include "app/resource_bundle.h" | 7 #include "app/resource_bundle.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 return "text/html"; | 51 return "text/html"; |
| 52 } | 52 } |
| 53 | 53 |
| 54 private: | 54 private: |
| 55 ~SlideshowUIHTMLSource() {} | 55 ~SlideshowUIHTMLSource() {} |
| 56 | 56 |
| 57 DISALLOW_COPY_AND_ASSIGN(SlideshowUIHTMLSource); | 57 DISALLOW_COPY_AND_ASSIGN(SlideshowUIHTMLSource); |
| 58 }; | 58 }; |
| 59 | 59 |
| 60 // The handler for Javascript messages related to the "slideshow" view. | 60 // The handler for Javascript messages related to the "slideshow" view. |
| 61 class SlideshowHandler : public net::DirectoryLister::DirectoryListerDelegate, | 61 class SlideshowHandler : public net::DirectoryLister::Delegate, |
| 62 public DOMMessageHandler, | 62 public DOMMessageHandler, |
| 63 public base::SupportsWeakPtr<SlideshowHandler> { | 63 public base::SupportsWeakPtr<SlideshowHandler> { |
| 64 public: | 64 public: |
| 65 SlideshowHandler(); | 65 SlideshowHandler(); |
| 66 virtual ~SlideshowHandler(); | 66 virtual ~SlideshowHandler(); |
| 67 | 67 |
| 68 // Init work after Attach. | 68 // Init work after Attach. |
| 69 void Init(); | 69 void Init(); |
| 70 | 70 |
| 71 // DirectoryLister::DirectoryListerDelegate methods: | 71 // DirectoryLister::Delegate methods: |
| 72 virtual void OnListFile( | 72 virtual void OnListFile(const net::DirectoryLister::Data& data); |
| 73 const net::DirectoryLister::DirectoryListerData& data); | |
| 74 virtual void OnListDone(int error); | 73 virtual void OnListDone(int error); |
| 75 | 74 |
| 76 // DOMMessageHandler implementation. | 75 // DOMMessageHandler implementation. |
| 77 virtual DOMMessageHandler* Attach(DOMUI* dom_ui); | 76 virtual DOMMessageHandler* Attach(DOMUI* dom_ui); |
| 78 virtual void RegisterMessages(); | 77 virtual void RegisterMessages(); |
| 79 | 78 |
| 80 void GetChildrenForPath(const FilePath& path, bool is_refresh); | 79 void GetChildrenForPath(const FilePath& path, bool is_refresh); |
| 81 | 80 |
| 82 // Callback for the "getChildren" message. | 81 // Callback for the "getChildren" message. |
| 83 void HandleGetChildren(const ListValue* args); | 82 void HandleGetChildren(const ListValue* args); |
| 84 | 83 |
| 85 void HandleRefreshDirectory(const ListValue* args); | 84 void HandleRefreshDirectory(const ListValue* args); |
| 86 | 85 |
| 87 private: | 86 private: |
| 88 bool PathIsImageFile(const char* filename); | 87 bool PathIsImageFile(const char* filename); |
| 89 | 88 |
| 90 scoped_ptr<ListValue> filelist_value_; | 89 scoped_ptr<ListValue> filelist_value_; |
| 91 FilePath currentpath_; | 90 FilePath currentpath_; |
| 92 FilePath originalpath_; | 91 FilePath originalpath_; |
| 93 Profile* profile_; | 92 Profile* profile_; |
| 94 int counter_; | 93 int counter_; |
| 95 int currentOffset_; | 94 int currentOffset_; |
| 96 scoped_refptr<net::DirectoryLister> lister_; | 95 scoped_ptr<net::DirectoryLister> lister_; |
| 97 bool is_refresh_; | 96 bool is_refresh_; |
| 98 | 97 |
| 99 DISALLOW_COPY_AND_ASSIGN(SlideshowHandler); | 98 DISALLOW_COPY_AND_ASSIGN(SlideshowHandler); |
| 100 }; | 99 }; |
| 101 | 100 |
| 102 //////////////////////////////////////////////////////////////////////////////// | 101 //////////////////////////////////////////////////////////////////////////////// |
| 103 // | 102 // |
| 104 // SlideshowHTMLSource | 103 // SlideshowHTMLSource |
| 105 // | 104 // |
| 106 //////////////////////////////////////////////////////////////////////////////// | 105 //////////////////////////////////////////////////////////////////////////////// |
| (...skipping 24 matching lines...) Expand all Loading... |
| 131 } | 130 } |
| 132 | 131 |
| 133 //////////////////////////////////////////////////////////////////////////////// | 132 //////////////////////////////////////////////////////////////////////////////// |
| 134 // | 133 // |
| 135 // SlideshowHandler | 134 // SlideshowHandler |
| 136 // | 135 // |
| 137 //////////////////////////////////////////////////////////////////////////////// | 136 //////////////////////////////////////////////////////////////////////////////// |
| 138 SlideshowHandler::SlideshowHandler() | 137 SlideshowHandler::SlideshowHandler() |
| 139 : profile_(NULL), | 138 : profile_(NULL), |
| 140 is_refresh_(false) { | 139 is_refresh_(false) { |
| 141 lister_ = NULL; | |
| 142 } | 140 } |
| 143 | 141 |
| 144 SlideshowHandler::~SlideshowHandler() { | 142 SlideshowHandler::~SlideshowHandler() {} |
| 145 if (lister_.get()) { | |
| 146 lister_->Cancel(); | |
| 147 lister_->set_delegate(NULL); | |
| 148 } | |
| 149 } | |
| 150 | 143 |
| 151 DOMMessageHandler* SlideshowHandler::Attach(DOMUI* dom_ui) { | 144 DOMMessageHandler* SlideshowHandler::Attach(DOMUI* dom_ui) { |
| 152 // Create our favicon data source. | 145 // Create our favicon data source. |
| 153 BrowserThread::PostTask( | 146 BrowserThread::PostTask( |
| 154 BrowserThread::IO, FROM_HERE, | 147 BrowserThread::IO, FROM_HERE, |
| 155 NewRunnableMethod( | 148 NewRunnableMethod( |
| 156 ChromeURLDataManager::GetInstance(), | 149 ChromeURLDataManager::GetInstance(), |
| 157 &ChromeURLDataManager::AddDataSource, | 150 &ChromeURLDataManager::AddDataSource, |
| 158 make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile())))); | 151 make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile())))); |
| 159 profile_ = dom_ui->GetProfile(); | 152 profile_ = dom_ui->GetProfile(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 175 std::string path = WideToUTF8(ExtractStringValue(args)); | 168 std::string path = WideToUTF8(ExtractStringValue(args)); |
| 176 GetChildrenForPath(FilePath(path), true); | 169 GetChildrenForPath(FilePath(path), true); |
| 177 #endif | 170 #endif |
| 178 } | 171 } |
| 179 | 172 |
| 180 void SlideshowHandler::GetChildrenForPath(const FilePath& path, | 173 void SlideshowHandler::GetChildrenForPath(const FilePath& path, |
| 181 bool is_refresh) { | 174 bool is_refresh) { |
| 182 filelist_value_.reset(new ListValue()); | 175 filelist_value_.reset(new ListValue()); |
| 183 currentpath_ = path; | 176 currentpath_ = path; |
| 184 | 177 |
| 185 if (lister_.get()) { | 178 lister_.reset(); |
| 186 lister_->Cancel(); | |
| 187 lister_->set_delegate(NULL); | |
| 188 lister_ = NULL; | |
| 189 } | |
| 190 | 179 |
| 191 is_refresh_ = is_refresh; | 180 is_refresh_ = is_refresh; |
| 192 if (file_util::EnsureEndsWithSeparator(¤tpath_) && | 181 if (file_util::EnsureEndsWithSeparator(¤tpath_) && |
| 193 currentpath_.IsAbsolute()) { | 182 currentpath_.IsAbsolute()) { |
| 194 lister_ = new net::DirectoryLister(currentpath_, this); | 183 lister_.reset(new net::DirectoryLister(currentpath_, this)); |
| 195 } else { | 184 } else { |
| 196 originalpath_ = currentpath_; | 185 originalpath_ = currentpath_; |
| 197 currentpath_ = currentpath_.DirName(); | 186 currentpath_ = currentpath_.DirName(); |
| 198 lister_ = new net::DirectoryLister(currentpath_, this); | 187 lister_.reset(new net::DirectoryLister(currentpath_, this)); |
| 199 } | 188 } |
| 200 counter_ = 0; | 189 counter_ = 0; |
| 201 currentOffset_ = -1; | 190 currentOffset_ = -1; |
| 202 lister_->Start(); | 191 lister_->Start(); |
| 203 } | 192 } |
| 204 | 193 |
| 205 void SlideshowHandler::HandleGetChildren(const ListValue* args) { | 194 void SlideshowHandler::HandleGetChildren(const ListValue* args) { |
| 206 #if defined(OS_CHROMEOS) | 195 #if defined(OS_CHROMEOS) |
| 207 filelist_value_.reset(new ListValue()); | 196 filelist_value_.reset(new ListValue()); |
| 208 std::string path = WideToUTF8(ExtractStringValue(args)); | 197 std::string path = WideToUTF8(ExtractStringValue(args)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 221 ext == ".gif") { | 210 ext == ".gif") { |
| 222 return true; | 211 return true; |
| 223 } else { | 212 } else { |
| 224 return false; | 213 return false; |
| 225 } | 214 } |
| 226 #else | 215 #else |
| 227 return false; | 216 return false; |
| 228 #endif | 217 #endif |
| 229 } | 218 } |
| 230 | 219 |
| 231 void SlideshowHandler::OnListFile( | 220 void SlideshowHandler::OnListFile(const net::DirectoryLister::Data& data) { |
| 232 const net::DirectoryLister::DirectoryListerData& data) { | |
| 233 #if defined(OS_CHROMEOS) | 221 #if defined(OS_CHROMEOS) |
| 234 if (data.info.filename[0] == '.') { | 222 if (data.info.filename[0] == '.') { |
| 235 return; | 223 return; |
| 236 } | 224 } |
| 237 if (!PathIsImageFile(data.info.filename.c_str())) { | 225 if (!PathIsImageFile(data.info.filename.c_str())) { |
| 238 return; | 226 return; |
| 239 } | 227 } |
| 240 | 228 |
| 241 DictionaryValue* file_value = new DictionaryValue(); | 229 DictionaryValue* file_value = new DictionaryValue(); |
| 242 | 230 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 SlideshowUIHTMLSource* html_source = new SlideshowUIHTMLSource(); | 273 SlideshowUIHTMLSource* html_source = new SlideshowUIHTMLSource(); |
| 286 | 274 |
| 287 // Set up the chrome://slideshow/ source. | 275 // Set up the chrome://slideshow/ source. |
| 288 BrowserThread::PostTask( | 276 BrowserThread::PostTask( |
| 289 BrowserThread::IO, FROM_HERE, | 277 BrowserThread::IO, FROM_HERE, |
| 290 NewRunnableMethod( | 278 NewRunnableMethod( |
| 291 ChromeURLDataManager::GetInstance(), | 279 ChromeURLDataManager::GetInstance(), |
| 292 &ChromeURLDataManager::AddDataSource, | 280 &ChromeURLDataManager::AddDataSource, |
| 293 make_scoped_refptr(html_source))); | 281 make_scoped_refptr(html_source))); |
| 294 } | 282 } |
| OLD | NEW |