OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/api/media_galleries_private/media_galleries_
private_api.h" | 5 #include "chrome/browser/extensions/api/media_galleries_private/media_galleries_
private_api.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 if (!GetGalleryFilePathAndId(pref_id, | 185 if (!GetGalleryFilePathAndId(pref_id, |
186 GetProfile(), | 186 GetProfile(), |
187 GetExtension(), | 187 GetExtension(), |
188 &gallery_file_path, | 188 &gallery_file_path, |
189 &gallery_pref_id)) { | 189 &gallery_pref_id)) { |
190 error_ = kInvalidGalleryIDError; | 190 error_ = kInvalidGalleryIDError; |
191 HandleResponse(gallery_pref_id, false); | 191 HandleResponse(gallery_pref_id, false); |
192 return; | 192 return; |
193 } | 193 } |
194 | 194 |
195 #if defined(OS_WIN) || defined(OS_LINUX) | |
196 MediaGalleriesPrivateEventRouter* router = | 195 MediaGalleriesPrivateEventRouter* router = |
197 MediaGalleriesPrivateAPI::Get(GetProfile())->GetEventRouter(); | 196 MediaGalleriesPrivateAPI::Get(GetProfile())->GetEventRouter(); |
198 DCHECK(router); | 197 DCHECK(router); |
199 content::BrowserThread::PostTaskAndReplyWithResult( | 198 content::BrowserThread::PostTaskAndReplyWithResult( |
200 content::BrowserThread::FILE, | 199 content::BrowserThread::FILE, |
201 FROM_HERE, | 200 FROM_HERE, |
202 base::Bind(&GalleryWatchManager::SetupGalleryWatch, | 201 base::Bind(&GalleryWatchManager::SetupGalleryWatch, |
203 GetProfile(), | 202 GetProfile(), |
204 gallery_pref_id, | 203 gallery_pref_id, |
205 gallery_file_path, | 204 gallery_file_path, |
206 extension_id(), | 205 extension_id(), |
207 router->AsWeakPtr()), | 206 router->AsWeakPtr()), |
208 base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, | 207 base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, |
209 this, | 208 this, |
210 gallery_pref_id)); | 209 gallery_pref_id)); |
211 #else | |
212 // Recursive gallery watch operation is not currently supported on Mac: | |
213 // crbug.com/144491 | |
214 HandleResponse(gallery_pref_id, false); | |
215 #endif | |
216 } | 210 } |
217 | 211 |
218 void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( | 212 void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( |
219 MediaGalleryPrefId gallery_id, | 213 MediaGalleryPrefId gallery_id, |
220 bool success) { | 214 bool success) { |
221 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 215 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
222 media_galleries_private::AddGalleryWatchResult result; | 216 media_galleries_private::AddGalleryWatchResult result; |
223 result.gallery_id = base::Uint64ToString(gallery_id); | 217 result.gallery_id = base::Uint64ToString(gallery_id); |
224 result.success = success; | 218 result.success = success; |
225 SetResult(result.ToValue().release()); | 219 SetResult(result.ToValue().release()); |
(...skipping 15 matching lines...) Expand all Loading... |
241 | 235 |
242 MediaGalleriesPrivateRemoveGalleryWatchFunction:: | 236 MediaGalleriesPrivateRemoveGalleryWatchFunction:: |
243 ~MediaGalleriesPrivateRemoveGalleryWatchFunction() { | 237 ~MediaGalleriesPrivateRemoveGalleryWatchFunction() { |
244 } | 238 } |
245 | 239 |
246 bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunAsync() { | 240 bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunAsync() { |
247 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 241 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
248 if (!render_view_host() || !render_view_host()->GetProcess()) | 242 if (!render_view_host() || !render_view_host()->GetProcess()) |
249 return false; | 243 return false; |
250 | 244 |
251 // Remove gallery watch operation is currently supported on Mac: | |
252 // crbug.com/144491 | |
253 scoped_ptr<RemoveGalleryWatch::Params> params( | 245 scoped_ptr<RemoveGalleryWatch::Params> params( |
254 RemoveGalleryWatch::Params::Create(*args_)); | 246 RemoveGalleryWatch::Params::Create(*args_)); |
255 EXTENSION_FUNCTION_VALIDATE(params.get()); | 247 EXTENSION_FUNCTION_VALIDATE(params.get()); |
256 | 248 |
257 MediaGalleriesPreferences* preferences = | 249 MediaGalleriesPreferences* preferences = |
258 g_browser_process->media_file_system_registry()->GetPreferences( | 250 g_browser_process->media_file_system_registry()->GetPreferences( |
259 GetProfile()); | 251 GetProfile()); |
260 preferences->EnsureInitialized(base::Bind( | 252 preferences->EnsureInitialized(base::Bind( |
261 &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit, | 253 &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit, |
262 this, | 254 this, |
263 params->gallery_id)); | 255 params->gallery_id)); |
264 return true; | 256 return true; |
265 } | 257 } |
266 | 258 |
267 void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit( | 259 void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferencesInit( |
268 const std::string& pref_id) { | 260 const std::string& pref_id) { |
269 #if defined(OS_WIN) || defined(OS_LINUX) | |
270 base::FilePath gallery_file_path; | 261 base::FilePath gallery_file_path; |
271 MediaGalleryPrefId gallery_pref_id = 0; | 262 MediaGalleryPrefId gallery_pref_id = 0; |
272 if (!GetGalleryFilePathAndId(pref_id, | 263 if (!GetGalleryFilePathAndId(pref_id, |
273 GetProfile(), | 264 GetProfile(), |
274 GetExtension(), | 265 GetExtension(), |
275 &gallery_file_path, | 266 &gallery_file_path, |
276 &gallery_pref_id)) { | 267 &gallery_pref_id)) { |
277 error_ = kInvalidGalleryIDError; | 268 error_ = kInvalidGalleryIDError; |
278 SendResponse(false); | 269 SendResponse(false); |
279 return; | 270 return; |
280 } | 271 } |
281 | 272 |
282 content::BrowserThread::PostTask( | 273 content::BrowserThread::PostTask( |
283 content::BrowserThread::FILE, | 274 content::BrowserThread::FILE, |
284 FROM_HERE, | 275 FROM_HERE, |
285 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, | 276 base::Bind(&GalleryWatchManager::RemoveGalleryWatch, |
286 GetProfile(), | 277 GetProfile(), |
287 gallery_file_path, | 278 gallery_file_path, |
288 extension_id())); | 279 extension_id())); |
289 | 280 |
290 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( | 281 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( |
291 GetProfile())->GetGalleryWatchStateTracker(); | 282 GetProfile())->GetGalleryWatchStateTracker(); |
292 state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); | 283 state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); |
293 #endif | |
294 SendResponse(true); | 284 SendResponse(true); |
295 } | 285 } |
296 | 286 |
297 /////////////////////////////////////////////////////////////////////////////// | 287 /////////////////////////////////////////////////////////////////////////////// |
298 // MediaGalleriesPrivateGetAllGalleryWatchFunction // | 288 // MediaGalleriesPrivateGetAllGalleryWatchFunction // |
299 /////////////////////////////////////////////////////////////////////////////// | 289 /////////////////////////////////////////////////////////////////////////////// |
300 | 290 |
301 MediaGalleriesPrivateGetAllGalleryWatchFunction:: | 291 MediaGalleriesPrivateGetAllGalleryWatchFunction:: |
302 ~MediaGalleriesPrivateGetAllGalleryWatchFunction() { | 292 ~MediaGalleriesPrivateGetAllGalleryWatchFunction() { |
303 } | 293 } |
304 | 294 |
305 bool MediaGalleriesPrivateGetAllGalleryWatchFunction::RunAsync() { | 295 bool MediaGalleriesPrivateGetAllGalleryWatchFunction::RunAsync() { |
306 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 296 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
307 if (!render_view_host() || !render_view_host()->GetProcess()) | 297 if (!render_view_host() || !render_view_host()->GetProcess()) |
308 return false; | 298 return false; |
309 | 299 |
310 MediaGalleriesPreferences* preferences = | 300 MediaGalleriesPreferences* preferences = |
311 g_browser_process->media_file_system_registry()->GetPreferences( | 301 g_browser_process->media_file_system_registry()->GetPreferences( |
312 GetProfile()); | 302 GetProfile()); |
313 preferences->EnsureInitialized(base::Bind( | 303 preferences->EnsureInitialized(base::Bind( |
314 &MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit, | 304 &MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit, |
315 this)); | 305 this)); |
316 return true; | 306 return true; |
317 } | 307 } |
318 | 308 |
319 void MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit() { | 309 void MediaGalleriesPrivateGetAllGalleryWatchFunction::OnPreferencesInit() { |
320 std::vector<std::string> result; | 310 std::vector<std::string> result; |
321 #if defined(OS_WIN) || defined(OS_LINUX) | |
322 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( | 311 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( |
323 GetProfile())->GetGalleryWatchStateTracker(); | 312 GetProfile())->GetGalleryWatchStateTracker(); |
324 MediaGalleryPrefIdSet gallery_ids = | 313 MediaGalleryPrefIdSet gallery_ids = |
325 state_tracker->GetAllWatchedGalleryIDsForExtension(extension_id()); | 314 state_tracker->GetAllWatchedGalleryIDsForExtension(extension_id()); |
326 for (MediaGalleryPrefIdSet::const_iterator iter = gallery_ids.begin(); | 315 for (MediaGalleryPrefIdSet::const_iterator iter = gallery_ids.begin(); |
327 iter != gallery_ids.end(); ++iter) { | 316 iter != gallery_ids.end(); ++iter) { |
328 result.push_back(base::Uint64ToString(*iter)); | 317 result.push_back(base::Uint64ToString(*iter)); |
329 } | 318 } |
330 #endif | |
331 results_ = GetAllGalleryWatch::Results::Create(result); | 319 results_ = GetAllGalleryWatch::Results::Create(result); |
332 SendResponse(true); | 320 SendResponse(true); |
333 } | 321 } |
334 | 322 |
335 /////////////////////////////////////////////////////////////////////////////// | 323 /////////////////////////////////////////////////////////////////////////////// |
336 // MediaGalleriesPrivateRemoveAllGalleryWatchFunction // | 324 // MediaGalleriesPrivateRemoveAllGalleryWatchFunction // |
337 /////////////////////////////////////////////////////////////////////////////// | 325 /////////////////////////////////////////////////////////////////////////////// |
338 | 326 |
339 MediaGalleriesPrivateRemoveAllGalleryWatchFunction:: | 327 MediaGalleriesPrivateRemoveAllGalleryWatchFunction:: |
340 ~MediaGalleriesPrivateRemoveAllGalleryWatchFunction() { | 328 ~MediaGalleriesPrivateRemoveAllGalleryWatchFunction() { |
341 } | 329 } |
342 | 330 |
343 bool MediaGalleriesPrivateRemoveAllGalleryWatchFunction::RunAsync() { | 331 bool MediaGalleriesPrivateRemoveAllGalleryWatchFunction::RunAsync() { |
344 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 332 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
345 if (!render_view_host() || !render_view_host()->GetProcess()) | 333 if (!render_view_host() || !render_view_host()->GetProcess()) |
346 return false; | 334 return false; |
347 | 335 |
348 MediaGalleriesPreferences* preferences = | 336 MediaGalleriesPreferences* preferences = |
349 g_browser_process->media_file_system_registry()->GetPreferences( | 337 g_browser_process->media_file_system_registry()->GetPreferences( |
350 GetProfile()); | 338 GetProfile()); |
351 preferences->EnsureInitialized(base::Bind( | 339 preferences->EnsureInitialized(base::Bind( |
352 &MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit, | 340 &MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit, |
353 this)); | 341 this)); |
354 return true; | 342 return true; |
355 } | 343 } |
356 | 344 |
357 void MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit() { | 345 void MediaGalleriesPrivateRemoveAllGalleryWatchFunction::OnPreferencesInit() { |
358 #if defined(OS_WIN) || defined(OS_LINUX) | |
359 MediaGalleriesPreferences* preferences = | 346 MediaGalleriesPreferences* preferences = |
360 g_browser_process->media_file_system_registry()->GetPreferences( | 347 g_browser_process->media_file_system_registry()->GetPreferences( |
361 GetProfile()); | 348 GetProfile()); |
362 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( | 349 GalleryWatchStateTracker* state_tracker = MediaGalleriesPrivateAPI::Get( |
363 GetProfile())->GetGalleryWatchStateTracker(); | 350 GetProfile())->GetGalleryWatchStateTracker(); |
364 state_tracker->RemoveAllGalleryWatchersForExtension( | 351 state_tracker->RemoveAllGalleryWatchersForExtension( |
365 extension_id(), preferences); | 352 extension_id(), preferences); |
366 #endif | |
367 SendResponse(true); | 353 SendResponse(true); |
368 } | 354 } |
369 | 355 |
370 } // namespace extensions | 356 } // namespace extensions |
OLD | NEW |