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

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

Issue 24269007: Media Galleries API: Fix MediaGalleriesPreferences finders race. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
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"
(...skipping 29 matching lines...) Expand all
40 { "manageGalleriesButton", IDS_MEDIA_GALLERY_MANAGE_BUTTON }, 40 { "manageGalleriesButton", IDS_MEDIA_GALLERY_MANAGE_BUTTON },
41 { "addNewGalleryButton", IDS_MEDIA_GALLERY_ADD_NEW_BUTTON }, 41 { "addNewGalleryButton", IDS_MEDIA_GALLERY_ADD_NEW_BUTTON },
42 }; 42 };
43 43
44 RegisterStrings(values, resources, arraysize(resources)); 44 RegisterStrings(values, resources, arraysize(resources));
45 RegisterTitle(values, "manageMediaGalleries", 45 RegisterTitle(values, "manageMediaGalleries",
46 IDS_MEDIA_GALLERY_MANAGE_TITLE); 46 IDS_MEDIA_GALLERY_MANAGE_TITLE);
47 } 47 }
48 48
49 void MediaGalleriesHandler::InitializePage() { 49 void MediaGalleriesHandler::InitializePage() {
50 StorageMonitor::GetInstance()->EnsureInitialized( 50 Profile* profile = Profile::FromWebUI(web_ui());
51 base::Bind(&MediaGalleriesHandler::InitializeOnStorageMonitorInit, 51 MediaGalleriesPreferences* preferences =
52 weak_ptr_factory_.GetWeakPtr())); 52 g_browser_process->media_file_system_registry()->GetPreferences(profile);
53 preferences->EnsureInitialized(base::Bind(
54 &MediaGalleriesHandler::InitializeOnMediaGalleriesPreferencesInit,
55 weak_ptr_factory_.GetWeakPtr()));
53 } 56 }
54 57
55 void MediaGalleriesHandler::InitializeOnStorageMonitorInit() { 58 void MediaGalleriesHandler::InitializeOnMediaGalleriesPreferencesInit() {
56 Profile* profile = Profile::FromWebUI(web_ui()); 59 Profile* profile = Profile::FromWebUI(web_ui());
57 if (!MediaGalleriesPreferences::APIHasBeenUsed(profile)) 60 if (!MediaGalleriesPreferences::APIHasBeenUsed(profile))
58 return; 61 return;
59 62
60 if (pref_change_registrar_.IsEmpty()) { 63 if (pref_change_registrar_.IsEmpty()) {
61 pref_change_registrar_.Init(profile->GetPrefs()); 64 pref_change_registrar_.Init(profile->GetPrefs());
62 pref_change_registrar_.Add( 65 pref_change_registrar_.Add(
63 prefs::kMediaGalleriesRememberedGalleries, 66 prefs::kMediaGalleriesRememberedGalleries,
64 base::Bind(&MediaGalleriesHandler::OnGalleriesChanged, 67 base::Bind(&MediaGalleriesHandler::OnGalleriesChanged,
65 base::Unretained(this))); 68 base::Unretained(this)));
66 } 69 }
67 70
68 OnGalleriesChanged(); 71 OnGalleriesChanged();
69 } 72 }
70 73
71 void MediaGalleriesHandler::RegisterMessages() { 74 void MediaGalleriesHandler::RegisterMessages() {
72 StorageMonitor::GetInstance()->EnsureInitialized( 75 Profile* profile = Profile::FromWebUI(web_ui());
73 base::Bind(&MediaGalleriesHandler::RegisterOnStorageMonitorInit, 76 MediaGalleriesPreferences* preferences =
74 weak_ptr_factory_.GetWeakPtr())); 77 g_browser_process->media_file_system_registry()->GetPreferences(profile);
78 preferences->EnsureInitialized(base::Bind(
79 &MediaGalleriesHandler::RegisterOnPreferencesInit,
80 weak_ptr_factory_.GetWeakPtr()));
75 } 81 }
76 82
77 void MediaGalleriesHandler::RegisterOnStorageMonitorInit() { 83 void MediaGalleriesHandler::RegisterOnPreferencesInit() {
78 web_ui()->RegisterMessageCallback( 84 web_ui()->RegisterMessageCallback(
79 "addNewGallery", 85 "addNewGallery",
80 base::Bind(&MediaGalleriesHandler::HandleAddNewGallery, 86 base::Bind(&MediaGalleriesHandler::HandleAddNewGallery,
81 base::Unretained(this))); 87 base::Unretained(this)));
82 web_ui()->RegisterMessageCallback( 88 web_ui()->RegisterMessageCallback(
83 "forgetGallery", 89 "forgetGallery",
84 base::Bind(&MediaGalleriesHandler::HandleForgetGallery, 90 base::Bind(&MediaGalleriesHandler::HandleForgetGallery,
85 base::Unretained(this))); 91 base::Unretained(this)));
86 } 92 }
87 93
88 void MediaGalleriesHandler::OnGalleriesChanged() { 94 void MediaGalleriesHandler::OnGalleriesChanged() {
89 DCHECK(StorageMonitor::GetInstance()->IsInitialized()); 95 DCHECK(StorageMonitor::GetInstance()->IsInitialized());
90 Profile* profile = Profile::FromWebUI(web_ui()); 96 Profile* profile = Profile::FromWebUI(web_ui());
91 MediaGalleriesPreferences* preferences = 97 MediaGalleriesPreferences* preferences =
92 g_browser_process->media_file_system_registry()->GetPreferences(profile); 98 g_browser_process->media_file_system_registry()->GetPreferences(profile);
99 DCHECK(preferences->IsInitialized());
vandebo (ex-Chrome) 2013/09/26 22:42:36 nit: remove
tommycli 2013/09/26 23:53:33 Done.
93 100
94 ListValue list; 101 ListValue list;
95 const MediaGalleriesPrefInfoMap& galleries = preferences->known_galleries(); 102 const MediaGalleriesPrefInfoMap& galleries = preferences->known_galleries();
96 for (MediaGalleriesPrefInfoMap::const_iterator iter = galleries.begin(); 103 for (MediaGalleriesPrefInfoMap::const_iterator iter = galleries.begin();
97 iter != galleries.end(); ++iter) { 104 iter != galleries.end(); ++iter) {
98 const MediaGalleryPrefInfo& gallery = iter->second; 105 const MediaGalleryPrefInfo& gallery = iter->second;
99 if (gallery.type == MediaGalleryPrefInfo::kBlackListed) 106 if (gallery.type == MediaGalleryPrefInfo::kBlackListed)
100 continue; 107 continue;
101 108
102 DictionaryValue* dict = new DictionaryValue(); 109 DictionaryValue* dict = new DictionaryValue();
(...skipping 28 matching lines...) Expand all
131 if (!args->GetString(0, &string_id) || 138 if (!args->GetString(0, &string_id) ||
132 !base::StringToUint64(string_id, &id)) { 139 !base::StringToUint64(string_id, &id)) {
133 NOTREACHED(); 140 NOTREACHED();
134 return; 141 return;
135 } 142 }
136 143
137 DCHECK(StorageMonitor::GetInstance()->IsInitialized()); 144 DCHECK(StorageMonitor::GetInstance()->IsInitialized());
138 MediaGalleriesPreferences* preferences = 145 MediaGalleriesPreferences* preferences =
139 g_browser_process->media_file_system_registry()->GetPreferences( 146 g_browser_process->media_file_system_registry()->GetPreferences(
140 Profile::FromWebUI(web_ui())); 147 Profile::FromWebUI(web_ui()));
148 DCHECK(preferences->IsInitialized());
vandebo (ex-Chrome) 2013/09/26 22:42:36 nit: remove
tommycli 2013/09/26 23:53:33 Done.
141 preferences->ForgetGalleryById(id); 149 preferences->ForgetGalleryById(id);
142 } 150 }
143 151
144 void MediaGalleriesHandler::FileSelected(const base::FilePath& path, 152 void MediaGalleriesHandler::FileSelected(const base::FilePath& path,
145 int index, 153 int index,
146 void* params) { 154 void* params) {
147 DCHECK(StorageMonitor::GetInstance()->IsInitialized()); 155 DCHECK(StorageMonitor::GetInstance()->IsInitialized());
148 MediaGalleriesPreferences* preferences = 156 MediaGalleriesPreferences* preferences =
149 g_browser_process->media_file_system_registry()->GetPreferences( 157 g_browser_process->media_file_system_registry()->GetPreferences(
150 Profile::FromWebUI(web_ui())); 158 Profile::FromWebUI(web_ui()));
159 DCHECK(preferences->IsInitialized());
vandebo (ex-Chrome) 2013/09/26 22:42:36 nit: remove
tommycli 2013/09/26 23:53:33 Done.
151 preferences->AddGalleryByPath(path); 160 preferences->AddGalleryByPath(path);
152 } 161 }
153 162
154 } // namespace options 163 } // namespace options
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698