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

Side by Side Diff: chrome/browser/ui/webui/options/media_galleries_handler.cc

Issue 14556015: [Media Galleries] Lazily initialize the storage monitor. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase 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 unified diff | Download patch
OLDNEW
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/ui/webui/options/media_galleries_handler.h" 5 #include "chrome/browser/ui/webui/options/media_galleries_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/media_galleries/media_file_system_registry.h" 11 #include "chrome/browser/media_galleries/media_file_system_registry.h"
12 #include "chrome/browser/media_galleries/media_galleries_preferences.h" 12 #include "chrome/browser/media_galleries/media_galleries_preferences.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/chrome_select_file_policy.h" 14 #include "chrome/browser/ui/chrome_select_file_policy.h"
15 #include "chrome/common/chrome_notification_types.h" 15 #include "chrome/common/chrome_notification_types.h"
16 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
17 #include "content/public/browser/notification_details.h" 17 #include "content/public/browser/notification_details.h"
18 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
19 #include "content/public/browser/web_contents_view.h" 19 #include "content/public/browser/web_contents_view.h"
20 #include "content/public/browser/web_ui.h" 20 #include "content/public/browser/web_ui.h"
21 #include "grit/generated_resources.h" 21 #include "grit/generated_resources.h"
22 22
23 namespace options { 23 namespace options {
24 24
25 using chrome::MediaGalleriesPreferences; 25 using chrome::MediaGalleriesPreferences;
26 using chrome::MediaGalleriesPrefInfoMap; 26 using chrome::MediaGalleriesPrefInfoMap;
27 using chrome::MediaGalleryPrefInfo; 27 using chrome::MediaGalleryPrefInfo;
28 28
29 MediaGalleriesHandler::MediaGalleriesHandler() { 29 MediaGalleriesHandler::MediaGalleriesHandler()
30 : weak_ptr_factory_(this) {
30 } 31 }
31 32
32 MediaGalleriesHandler::~MediaGalleriesHandler() { 33 MediaGalleriesHandler::~MediaGalleriesHandler() {
33 if (select_file_dialog_.get()) 34 if (select_file_dialog_.get())
34 select_file_dialog_->ListenerDestroyed(); 35 select_file_dialog_->ListenerDestroyed();
35 } 36 }
36 37
37 void MediaGalleriesHandler::GetLocalizedValues(DictionaryValue* values) { 38 void MediaGalleriesHandler::GetLocalizedValues(DictionaryValue* values) {
38 DCHECK(values); 39 DCHECK(values);
39 40
(...skipping 30 matching lines...) Expand all
70 base::Bind(&MediaGalleriesHandler::HandleAddNewGallery, 71 base::Bind(&MediaGalleriesHandler::HandleAddNewGallery,
71 base::Unretained(this))); 72 base::Unretained(this)));
72 web_ui()->RegisterMessageCallback( 73 web_ui()->RegisterMessageCallback(
73 "forgetGallery", 74 "forgetGallery",
74 base::Bind(&MediaGalleriesHandler::HandleForgetGallery, 75 base::Bind(&MediaGalleriesHandler::HandleForgetGallery,
75 base::Unretained(this))); 76 base::Unretained(this)));
76 } 77 }
77 78
78 void MediaGalleriesHandler::OnGalleriesChanged() { 79 void MediaGalleriesHandler::OnGalleriesChanged() {
79 Profile* profile = Profile::FromWebUI(web_ui()); 80 Profile* profile = Profile::FromWebUI(web_ui());
80 chrome::MediaGalleriesPreferences* preferences = 81 g_browser_process->media_file_system_registry()->GetPreferencesAsync(
81 g_browser_process->media_file_system_registry()->GetPreferences(profile); 82 profile,
83 base::Bind(&MediaGalleriesHandler::OnGalleriesChangedWithPreferences,
84 weak_ptr_factory_.GetWeakPtr()));
85 }
82 86
87 void MediaGalleriesHandler::OnGalleriesChangedWithPreferences(
88 chrome::MediaGalleriesPreferences* preferences) {
83 ListValue list; 89 ListValue list;
84 const MediaGalleriesPrefInfoMap& galleries = preferences->known_galleries(); 90 const MediaGalleriesPrefInfoMap& galleries = preferences->known_galleries();
85 for (MediaGalleriesPrefInfoMap::const_iterator iter = galleries.begin(); 91 for (MediaGalleriesPrefInfoMap::const_iterator iter = galleries.begin();
86 iter != galleries.end(); ++iter) { 92 iter != galleries.end(); ++iter) {
87 const MediaGalleryPrefInfo& gallery = iter->second; 93 const MediaGalleryPrefInfo& gallery = iter->second;
88 if (gallery.type == MediaGalleryPrefInfo::kBlackListed) 94 if (gallery.type == MediaGalleryPrefInfo::kBlackListed)
89 continue; 95 continue;
90 96
91 DictionaryValue* dict = new DictionaryValue(); 97 DictionaryValue* dict = new DictionaryValue();
92 dict->SetString("displayName", gallery.display_name); 98 dict->SetString("displayName", gallery.display_name);
93 dict->SetString("path", gallery.AbsolutePath().LossyDisplayName()); 99 dict->SetString("path", gallery.AbsolutePath().LossyDisplayName());
94 dict->SetString("id", base::Uint64ToString(gallery.pref_id)); 100 dict->SetString("id", base::Uint64ToString(gallery.pref_id));
95 list.Append(dict); 101 list.Append(dict);
96 } 102 }
97 103
98 web_ui()->CallJavascriptFunction( 104 web_ui()->CallJavascriptFunction(
vandebo (ex-Chrome) 2013/05/16 18:56:27 Is it ok to do this asynchronously ?
Lei Zhang 2013/05/16 21:09:12 Most browser <-> renderer communication is async.
vandebo (ex-Chrome) 2013/05/17 22:19:58 'doh - right.
99 "options.MediaGalleriesManager.setAvailableMediaGalleries", list); 105 "options.MediaGalleriesManager.setAvailableMediaGalleries", list);
100 } 106 }
101 107
102 void MediaGalleriesHandler::HandleAddNewGallery(const base::ListValue* args) { 108 void MediaGalleriesHandler::HandleAddNewGallery(const base::ListValue* args) {
103 select_file_dialog_ = ui::SelectFileDialog::Create( 109 select_file_dialog_ = ui::SelectFileDialog::Create(
104 this, 110 this,
105 new ChromeSelectFilePolicy(web_ui()->GetWebContents())); 111 new ChromeSelectFilePolicy(web_ui()->GetWebContents()));
106 select_file_dialog_->SelectFile( 112 select_file_dialog_->SelectFile(
107 ui::SelectFileDialog::SELECT_FOLDER, 113 ui::SelectFileDialog::SELECT_FOLDER,
108 string16(), // TODO(estade): a name for the dialog? 114 string16(), // TODO(estade): a name for the dialog?
109 base::FilePath(), 115 base::FilePath(),
110 NULL, 0, 116 NULL, 0,
111 base::FilePath::StringType(), 117 base::FilePath::StringType(),
112 web_ui()->GetWebContents()->GetView()-> 118 web_ui()->GetWebContents()->GetView()->
113 GetTopLevelNativeWindow(), 119 GetTopLevelNativeWindow(),
114 NULL); 120 NULL);
115 } 121 }
116 122
117 void MediaGalleriesHandler::HandleForgetGallery(const base::ListValue* args) { 123 void MediaGalleriesHandler::HandleForgetGallery(const base::ListValue* args) {
118 std::string string_id; 124 std::string string_id;
119 uint64 id = 0; 125 uint64 id = 0;
120 if (!args->GetString(0, &string_id) || 126 if (!args->GetString(0, &string_id) ||
121 !base::StringToUint64(string_id, &id)) { 127 !base::StringToUint64(string_id, &id)) {
122 NOTREACHED(); 128 NOTREACHED();
123 return; 129 return;
124 } 130 }
125 131
126 chrome::MediaGalleriesPreferences* prefs = 132 g_browser_process->media_file_system_registry()->GetPreferencesAsync(
127 g_browser_process->media_file_system_registry()->GetPreferences( 133 Profile::FromWebUI(web_ui()),
128 Profile::FromWebUI(web_ui())); 134 base::Bind(&MediaGalleriesHandler::HandleForgetGalleryWithPreferences,
129 prefs->ForgetGalleryById(id); 135 weak_ptr_factory_.GetWeakPtr(), id));
136 }
137
138 void MediaGalleriesHandler::HandleForgetGalleryWithPreferences(
139 uint64 id,
140 chrome::MediaGalleriesPreferences* preferences) {
141 preferences->ForgetGalleryById(id);
130 } 142 }
131 143
132 void MediaGalleriesHandler::FileSelected(const base::FilePath& path, 144 void MediaGalleriesHandler::FileSelected(const base::FilePath& path,
133 int index, 145 int index,
134 void* params) { 146 void* params) {
135 chrome::MediaGalleriesPreferences* prefs = 147 g_browser_process->media_file_system_registry()->GetPreferencesAsync(
136 g_browser_process->media_file_system_registry()->GetPreferences( 148 Profile::FromWebUI(web_ui()),
137 Profile::FromWebUI(web_ui())); 149 base::Bind(&MediaGalleriesHandler::FileSelectedWithPreferences,
138 prefs->AddGalleryByPath(path); 150 weak_ptr_factory_.GetWeakPtr(), path));
151 }
152
153 void MediaGalleriesHandler::FileSelectedWithPreferences(
154 base::FilePath path,
155 chrome::MediaGalleriesPreferences* preferences) {
156 preferences->AddGalleryByPath(path);
139 } 157 }
140 158
141 } // namespace options 159 } // namespace options
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698