OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "apps/launcher.h" | 5 #include "apps/launcher.h" |
6 | 6 |
| 7 #include <memory> |
7 #include <set> | 8 #include <set> |
8 #include <utility> | 9 #include <utility> |
9 | 10 |
10 #include "base/command_line.h" | 11 #include "base/command_line.h" |
11 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
12 #include "base/files/file_util.h" | 13 #include "base/files/file_util.h" |
13 #include "base/logging.h" | 14 #include "base/logging.h" |
14 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
15 #include "base/memory/scoped_ptr.h" | |
16 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
17 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
18 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" | 18 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" |
19 #include "chrome/browser/extensions/api/file_handlers/directory_util.h" | 19 #include "chrome/browser/extensions/api/file_handlers/directory_util.h" |
20 #include "chrome/browser/extensions/api/file_handlers/mime_util.h" | 20 #include "chrome/browser/extensions/api/file_handlers/mime_util.h" |
21 #include "chrome/browser/extensions/api/file_system/file_system_api.h" | 21 #include "chrome/browser/extensions/api/file_system/file_system_api.h" |
22 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
23 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
24 #include "content/public/browser/render_process_host.h" | 24 #include "content/public/browser/render_process_host.h" |
25 #include "content/public/browser/web_contents.h" | 25 #include "content/public/browser/web_contents.h" |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 base::Bind(&PlatformAppPathLauncher::LaunchWithNoLaunchData, this)); | 168 base::Bind(&PlatformAppPathLauncher::LaunchWithNoLaunchData, this)); |
169 return; | 169 return; |
170 } | 170 } |
171 } | 171 } |
172 | 172 |
173 BrowserThread::PostTask(BrowserThread::UI, | 173 BrowserThread::PostTask(BrowserThread::UI, |
174 FROM_HERE, | 174 FROM_HERE, |
175 base::Bind(&PlatformAppPathLauncher::Launch, this)); | 175 base::Bind(&PlatformAppPathLauncher::Launch, this)); |
176 } | 176 } |
177 | 177 |
178 void OnFilesValid(scoped_ptr<std::set<base::FilePath>> directory_paths) { | 178 void OnFilesValid(std::unique_ptr<std::set<base::FilePath>> directory_paths) { |
179 mime_type_collector_.CollectForLocalPaths( | 179 mime_type_collector_.CollectForLocalPaths( |
180 entry_paths_, | 180 entry_paths_, |
181 base::Bind( | 181 base::Bind( |
182 &PlatformAppPathLauncher::OnAreDirectoriesAndMimeTypesCollected, | 182 &PlatformAppPathLauncher::OnAreDirectoriesAndMimeTypesCollected, |
183 this, base::Passed(std::move(directory_paths)))); | 183 this, base::Passed(std::move(directory_paths)))); |
184 } | 184 } |
185 | 185 |
186 void OnFilesInvalid(const base::FilePath& /* error_path */) { | 186 void OnFilesInvalid(const base::FilePath& /* error_path */) { |
187 LaunchWithNoLaunchData(); | 187 LaunchWithNoLaunchData(); |
188 } | 188 } |
189 | 189 |
190 void LaunchWithNoLaunchData() { | 190 void LaunchWithNoLaunchData() { |
191 // This method is required as an entry point on the UI thread. | 191 // This method is required as an entry point on the UI thread. |
192 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 192 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
193 | 193 |
194 const Extension* extension = GetExtension(); | 194 const Extension* extension = GetExtension(); |
195 if (!extension) | 195 if (!extension) |
196 return; | 196 return; |
197 | 197 |
198 AppRuntimeEventRouter::DispatchOnLaunchedEvent( | 198 AppRuntimeEventRouter::DispatchOnLaunchedEvent( |
199 profile_, extension, extensions::SOURCE_FILE_HANDLER); | 199 profile_, extension, extensions::SOURCE_FILE_HANDLER); |
200 } | 200 } |
201 | 201 |
202 void OnAreDirectoriesCollected( | 202 void OnAreDirectoriesCollected( |
203 bool has_file_system_write_permission, | 203 bool has_file_system_write_permission, |
204 scoped_ptr<std::set<base::FilePath>> directory_paths) { | 204 std::unique_ptr<std::set<base::FilePath>> directory_paths) { |
205 if (has_file_system_write_permission) { | 205 if (has_file_system_write_permission) { |
206 std::set<base::FilePath>* const directory_paths_ptr = | 206 std::set<base::FilePath>* const directory_paths_ptr = |
207 directory_paths.get(); | 207 directory_paths.get(); |
208 PrepareFilesForWritableApp( | 208 PrepareFilesForWritableApp( |
209 entry_paths_, profile_, *directory_paths_ptr, | 209 entry_paths_, profile_, *directory_paths_ptr, |
210 base::Bind(&PlatformAppPathLauncher::OnFilesValid, this, | 210 base::Bind(&PlatformAppPathLauncher::OnFilesValid, this, |
211 base::Passed(std::move(directory_paths))), | 211 base::Passed(std::move(directory_paths))), |
212 base::Bind(&PlatformAppPathLauncher::OnFilesInvalid, this)); | 212 base::Bind(&PlatformAppPathLauncher::OnFilesInvalid, this)); |
213 return; | 213 return; |
214 } | 214 } |
215 | 215 |
216 OnFilesValid(std::move(directory_paths)); | 216 OnFilesValid(std::move(directory_paths)); |
217 } | 217 } |
218 | 218 |
219 void OnAreDirectoriesAndMimeTypesCollected( | 219 void OnAreDirectoriesAndMimeTypesCollected( |
220 scoped_ptr<std::set<base::FilePath>> directory_paths, | 220 std::unique_ptr<std::set<base::FilePath>> directory_paths, |
221 scoped_ptr<std::vector<std::string>> mime_types) { | 221 std::unique_ptr<std::vector<std::string>> mime_types) { |
222 DCHECK(entry_paths_.size() == mime_types->size()); | 222 DCHECK(entry_paths_.size() == mime_types->size()); |
223 // If fetching a mime type failed, then use a fallback one. | 223 // If fetching a mime type failed, then use a fallback one. |
224 for (size_t i = 0; i < entry_paths_.size(); ++i) { | 224 for (size_t i = 0; i < entry_paths_.size(); ++i) { |
225 const std::string mime_type = | 225 const std::string mime_type = |
226 !(*mime_types)[i].empty() ? (*mime_types)[i] : kFallbackMimeType; | 226 !(*mime_types)[i].empty() ? (*mime_types)[i] : kFallbackMimeType; |
227 bool is_directory = | 227 bool is_directory = |
228 directory_paths->find(entry_paths_[i]) != directory_paths->end(); | 228 directory_paths->find(entry_paths_[i]) != directory_paths->end(); |
229 entries_.push_back( | 229 entries_.push_back( |
230 extensions::EntryInfo(entry_paths_[i], mime_type, is_directory)); | 230 extensions::EntryInfo(entry_paths_[i], mime_type, is_directory)); |
231 } | 231 } |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 void LaunchPlatformAppWithUrl(Profile* profile, | 442 void LaunchPlatformAppWithUrl(Profile* profile, |
443 const Extension* extension, | 443 const Extension* extension, |
444 const std::string& handler_id, | 444 const std::string& handler_id, |
445 const GURL& url, | 445 const GURL& url, |
446 const GURL& referrer_url) { | 446 const GURL& referrer_url) { |
447 AppRuntimeEventRouter::DispatchOnLaunchedEventWithUrl( | 447 AppRuntimeEventRouter::DispatchOnLaunchedEventWithUrl( |
448 profile, extension, handler_id, url, referrer_url); | 448 profile, extension, handler_id, url, referrer_url); |
449 } | 449 } |
450 | 450 |
451 } // namespace apps | 451 } // namespace apps |
OLD | NEW |