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

Unified Diff: chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc

Issue 14556015: [Media Galleries] Lazily initialize the storage monitor. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Adjustments Created 7 years, 7 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc
diff --git a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc
index 64854f673fc46b4e64c02fc6088c66577768312a..92e52d1cfa28c2d0dc68528c0f79da2bc133f739 100644
--- a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc
+++ b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc
@@ -23,6 +23,7 @@
#include "chrome/browser/media_galleries/media_file_system_registry.h"
#include "chrome/browser/media_galleries/media_galleries_preferences.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/storage_monitor/storage_monitor.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_view_host.h"
@@ -60,29 +61,6 @@ void HandleProfileShutdownOnFileThread(void* profile_id) {
GalleryWatchManager::OnProfileShutdown(profile_id);
}
-// Gets the |gallery_file_path| and |gallery_pref_id| of the gallery specified
-// by the |gallery_id|. Returns true and set |gallery_file_path| and
-// |gallery_pref_id| if the |gallery_id| is valid and returns false otherwise.
-bool GetGalleryFilePathAndId(const std::string& gallery_id,
- Profile* profile,
- const Extension* extension,
- base::FilePath* gallery_file_path,
- chrome::MediaGalleryPrefId* gallery_pref_id) {
- chrome::MediaGalleryPrefId pref_id;
- if (!base::StringToUint64(gallery_id, &pref_id))
- return false;
- chrome::MediaFileSystemRegistry* registry =
- g_browser_process->media_file_system_registry();
- base::FilePath file_path(
- registry->GetPreferences(profile)->LookUpGalleryPathForExtension(
- pref_id, extension, false));
- if (file_path.empty())
- return false;
- *gallery_pref_id = pref_id;
- *gallery_file_path = file_path;
- return true;
-}
-
bool GetMediaGalleryPermissionFromDictionary(
const DictionaryValue* dict,
chrome::MediaGalleryPermission* out_permission) {
@@ -304,14 +282,35 @@ bool MediaGalleriesPrivateAddGalleryWatchFunction::RunImpl() {
scoped_ptr<AddGalleryWatch::Params> params(
AddGalleryWatch::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
- base::FilePath gallery_file_path;
- chrome::MediaGalleryPrefId gallery_pref_id = 0;
- if (!GetGalleryFilePathAndId(params->gallery_id, profile_, GetExtension(),
- &gallery_file_path, &gallery_pref_id)) {
+
+ chrome::MediaGalleryPrefId pref_id = chrome::kInvalidMediaGalleryPrefId;
+ if (!base::StringToUint64(params->gallery_id, &pref_id) ||
+ pref_id == chrome::kInvalidMediaGalleryPrefId) {
error_ = kInvalidGalleryIDError;
return false;
}
+ chrome::StorageMonitor::GetInstance()->Initialize(base::Bind(
+ &MediaGalleriesPrivateAddGalleryWatchFunction::OnStorageMonitorInit,
+ this, pref_id));
+ return true;
+}
+
+void MediaGalleriesPrivateAddGalleryWatchFunction::OnStorageMonitorInit(
+ chrome::MediaGalleryPrefId pref_id) {
+ chrome::MediaFileSystemRegistry* registry =
+ g_browser_process->media_file_system_registry();
+ chrome::MediaGalleriesPreferences* preferences =
+ registry->GetPreferences(profile_);
+ base::FilePath file_path(preferences->LookUpGalleryPathForExtension(
+ pref_id, GetExtension(), false));
+
+ if (file_path.empty()) {
+ error_ = kInvalidGalleryIDError;
+ HandleResponse(pref_id, false);
+ return;
+ }
+
#if defined(OS_WIN)
MediaGalleriesPrivateEventRouter* router =
MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter();
@@ -321,19 +320,18 @@ bool MediaGalleriesPrivateAddGalleryWatchFunction::RunImpl() {
FROM_HERE,
base::Bind(&GalleryWatchManager::SetupGalleryWatch,
profile_,
- gallery_pref_id,
- gallery_file_path,
+ pref_id,
+ file_path,
extension_id(),
router->AsWeakPtr()),
base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse,
this,
- gallery_pref_id));
+ pref_id));
#else
// Recursive gallery watch operation is not currently supported on
// non-windows platforms. Please refer to crbug.com/144491 for more details.
- HandleResponse(gallery_pref_id, false);
+ HandleResponse(pref_id, false);
#endif
- return true;
}
void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse(
@@ -373,24 +371,48 @@ bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunImpl() {
RemoveGalleryWatch::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
- base::FilePath gallery_file_path;
- chrome::MediaGalleryPrefId gallery_pref_id = 0;
- if (!GetGalleryFilePathAndId(params->gallery_id, profile_, GetExtension(),
- &gallery_file_path, &gallery_pref_id)) {
+ chrome::MediaGalleryPrefId pref_id = chrome::kInvalidMediaGalleryPrefId;
+ if (!base::StringToUint64(params->gallery_id, &pref_id) ||
+ pref_id == chrome::kInvalidMediaGalleryPrefId) {
error_ = kInvalidGalleryIDError;
return false;
}
+ chrome::StorageMonitor::GetInstance()->Initialize(base::Bind(
+ &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnStorageMonitorInit,
+ this, pref_id));
+ return true;
+}
+
+void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnStorageMonitorInit(
+ chrome::MediaGalleryPrefId pref_id) {
+ chrome::MediaFileSystemRegistry* registry =
+ g_browser_process->media_file_system_registry();
+ chrome::MediaGalleriesPreferences* preferences =
+ registry->GetPreferences(profile_);
+ base::FilePath file_path(preferences->LookUpGalleryPathForExtension(
+ pref_id, GetExtension(), false));
+
+ if (file_path.empty) {
+ error_ = kInvalidGalleryIDError;
+ HandleResponse(pref_id, false);
+ return;
+ }
+
+ GalleryWatchStateTracker* state_tracker =
+ MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker();
+
content::BrowserThread::PostTask(
content::BrowserThread::FILE, FROM_HERE,
base::Bind(&GalleryWatchManager::RemoveGalleryWatch,
profile_,
- gallery_file_path,
+ preferences,
+ file_path,
extension_id()));
GalleryWatchStateTracker* state_tracker =
MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker();
- state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id);
+ state_tracker->OnGalleryWatchRemoved(extension_id(), pref_id);
#endif
return true;
}

Powered by Google App Engine
This is Rietveld 408576698