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

Side by Side Diff: chrome/browser/media_galleries/media_galleries_dialog_controller.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/media_galleries/media_galleries_dialog_controller.h" 5 #include "chrome/browser/media_galleries/media_galleries_dialog_controller.h"
6 6
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 } // namespace 44 } // namespace
45 45
46 MediaGalleriesDialogController::MediaGalleriesDialogController( 46 MediaGalleriesDialogController::MediaGalleriesDialogController(
47 content::WebContents* web_contents, 47 content::WebContents* web_contents,
48 const Extension& extension, 48 const Extension& extension,
49 const base::Closure& on_finish) 49 const base::Closure& on_finish)
50 : web_contents_(web_contents), 50 : web_contents_(web_contents),
51 extension_(&extension), 51 extension_(&extension),
52 on_finish_(on_finish) { 52 on_finish_(on_finish) {
53 preferences_ =
54 g_browser_process->media_file_system_registry()->GetPreferences(
55 Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
53 // Passing unretained pointer is safe, since the dialog controller 56 // Passing unretained pointer is safe, since the dialog controller
54 // is self-deleting, and so won't be deleted until it can be shown 57 // is self-deleting, and so won't be deleted until it can be shown
55 // and then closed. 58 // and then closed.
56 StorageMonitor::GetInstance()->EnsureInitialized(base::Bind( 59 preferences_->EnsureInitialized(
57 &MediaGalleriesDialogController::OnStorageMonitorInitialized, 60 base::Bind(&MediaGalleriesDialogController::OnPreferencesInitialized,
58 base::Unretained(this))); 61 base::Unretained(this)));
59 } 62 }
60 63
61 void MediaGalleriesDialogController::OnStorageMonitorInitialized() { 64 void MediaGalleriesDialogController::OnPreferencesInitialized() {
62 MediaFileSystemRegistry* registry =
63 g_browser_process->media_file_system_registry();
64 preferences_ = registry->GetPreferences(
65 Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
66 InitializePermissions(); 65 InitializePermissions();
67 66
68 dialog_.reset(MediaGalleriesDialog::Create(this)); 67 dialog_.reset(MediaGalleriesDialog::Create(this));
69 68
70 StorageMonitor::GetInstance()->AddObserver(this); 69 StorageMonitor::GetInstance()->AddObserver(this);
71 70
72 preferences_->AddGalleryChangeObserver(this); 71 preferences_->AddGalleryChangeObserver(this);
73 } 72 }
74 73
75 MediaGalleriesDialogController::MediaGalleriesDialogController( 74 MediaGalleriesDialogController::MediaGalleriesDialogController(
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 for (GalleryPermissionsVector::iterator iter = new_galleries_.begin(); 435 for (GalleryPermissionsVector::iterator iter = new_galleries_.begin();
437 iter != new_galleries_.end(); ++iter) { 436 iter != new_galleries_.end(); ++iter) {
438 if (iter->pref_info.device_id == device_id) 437 if (iter->pref_info.device_id == device_id)
439 dialog_->UpdateGallery(iter->pref_info, iter->allowed); 438 dialog_->UpdateGallery(iter->pref_info, iter->allowed);
440 } 439 }
441 } 440 }
442 441
443 // MediaGalleries dialog ------------------------------------------------------- 442 // MediaGalleries dialog -------------------------------------------------------
444 443
445 MediaGalleriesDialog::~MediaGalleriesDialog() {} 444 MediaGalleriesDialog::~MediaGalleriesDialog() {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698