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