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

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, 2 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 } // namespace 45 } // namespace
46 46
47 MediaGalleriesDialogController::MediaGalleriesDialogController( 47 MediaGalleriesDialogController::MediaGalleriesDialogController(
48 content::WebContents* web_contents, 48 content::WebContents* web_contents,
49 const Extension& extension, 49 const Extension& extension,
50 const base::Closure& on_finish) 50 const base::Closure& on_finish)
51 : web_contents_(web_contents), 51 : web_contents_(web_contents),
52 extension_(&extension), 52 extension_(&extension),
53 on_finish_(on_finish) { 53 on_finish_(on_finish) {
54 preferences_ =
55 g_browser_process->media_file_system_registry()->GetPreferences(
56 Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
54 // Passing unretained pointer is safe, since the dialog controller 57 // Passing unretained pointer is safe, since the dialog controller
55 // is self-deleting, and so won't be deleted until it can be shown 58 // is self-deleting, and so won't be deleted until it can be shown
56 // and then closed. 59 // and then closed.
57 StorageMonitor::GetInstance()->EnsureInitialized(base::Bind( 60 preferences_->EnsureInitialized(
58 &MediaGalleriesDialogController::OnStorageMonitorInitialized, 61 base::Bind(&MediaGalleriesDialogController::OnPreferencesInitialized,
59 base::Unretained(this))); 62 base::Unretained(this)));
60 } 63 }
61 64
62 void MediaGalleriesDialogController::OnStorageMonitorInitialized() { 65 void MediaGalleriesDialogController::OnPreferencesInitialized() {
63 MediaFileSystemRegistry* registry =
64 g_browser_process->media_file_system_registry();
65 preferences_ = registry->GetPreferences(
66 Profile::FromBrowserContext(web_contents_->GetBrowserContext()));
67 InitializePermissions(); 66 InitializePermissions();
68 67
69 dialog_.reset(MediaGalleriesDialog::Create(this)); 68 dialog_.reset(MediaGalleriesDialog::Create(this));
70 69
71 StorageMonitor::GetInstance()->AddObserver(this); 70 StorageMonitor::GetInstance()->AddObserver(this);
72 71
73 preferences_->AddGalleryChangeObserver(this); 72 preferences_->AddGalleryChangeObserver(this);
74 } 73 }
75 74
76 MediaGalleriesDialogController::MediaGalleriesDialogController( 75 MediaGalleriesDialogController::MediaGalleriesDialogController(
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 for (GalleryPermissionsVector::iterator iter = new_galleries_.begin(); 445 for (GalleryPermissionsVector::iterator iter = new_galleries_.begin();
447 iter != new_galleries_.end(); ++iter) { 446 iter != new_galleries_.end(); ++iter) {
448 if (iter->pref_info.device_id == device_id) 447 if (iter->pref_info.device_id == device_id)
449 dialog_->UpdateGallery(iter->pref_info, iter->allowed); 448 dialog_->UpdateGallery(iter->pref_info, iter->allowed);
450 } 449 }
451 } 450 }
452 451
453 // MediaGalleries dialog ------------------------------------------------------- 452 // MediaGalleries dialog -------------------------------------------------------
454 453
455 MediaGalleriesDialog::~MediaGalleriesDialog() {} 454 MediaGalleriesDialog::~MediaGalleriesDialog() {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698