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

Issue 24269007: Media Galleries API: Fix MediaGalleriesPreferences finders race. (Closed)

Created:
7 years, 3 months ago by tommycli
Modified:
7 years, 2 months ago
CC:
chromium-reviews, dbeam+watch-options_chromium.org, extensions-reviews_chromium.org, Lei Zhang, tzik+watch_chromium.org, tommycli, Greg Billock, chromium-apps-reviews_chromium.org, kinuko+watch
Visibility:
Public.

Description

Media Galleries API: Fix MediaGalleriesPreferences finders race. Unfortunately, MediaGalleriesPreferences now relies on two async finders during initialization, and currently has a race, where the finders don't return their devices until sometimes unspecified later. This adds an EnsureInitialized mechanic similar to StorageMonitor to solve that. Kind of ugly. BUG=151701, 295880 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=226127

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Patch Set 4 : update another unit test #

Patch Set 5 : #

Patch Set 6 : #

Patch Set 7 : #

Patch Set 8 : #

Total comments: 14

Patch Set 9 : #

Total comments: 12

Patch Set 10 : #

Patch Set 11 : merge origin #

Total comments: 16

Patch Set 12 : restore file thread #

Patch Set 13 : #

Patch Set 14 : #

Patch Set 15 : #

Total comments: 16

Patch Set 16 : #

Total comments: 4

Patch Set 17 : #

Patch Set 18 : #

Patch Set 19 : #

Total comments: 2

Patch Set 20 : #

Patch Set 21 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+282 lines, -165 lines) Patch
M chrome/browser/extensions/api/media_galleries/media_galleries_api.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -2 lines 0 comments Download
M chrome/browser/extensions/api/media_galleries/media_galleries_api.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 3 chunks +10 lines, -6 lines 0 comments Download
M chrome/browser/extensions/api/media_galleries/media_galleries_apitest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -3 lines 0 comments Download
M chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -4 lines 0 comments Download
M chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +4 lines, -4 lines 0 comments Download
M chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 8 chunks +34 lines, -29 lines 0 comments Download
M chrome/browser/media_galleries/fileapi/picasa_finder.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +2 lines, -1 line 0 comments Download
M chrome/browser/media_galleries/fileapi/picasa_finder.cc View 1 chunk +6 lines, -3 lines 0 comments Download
M chrome/browser/media_galleries/media_file_system_registry.h View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -7 lines 0 comments Download
M chrome/browser/media_galleries/media_file_system_registry.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4 chunks +12 lines, -28 lines 0 comments Download
M chrome/browser/media_galleries/media_file_system_registry_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +11 lines, -2 lines 0 comments Download
M chrome/browser/media_galleries/media_galleries_dialog_controller.h View 1 chunk +2 lines, -3 lines 0 comments Download
M chrome/browser/media_galleries/media_galleries_dialog_controller.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +7 lines, -8 lines 0 comments Download
M chrome/browser/media_galleries/media_galleries_permissions_unittest.cc View 1 2 3 4 5 6 7 8 10 11 4 chunks +17 lines, -1 line 0 comments Download
M chrome/browser/media_galleries/media_galleries_preferences.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 6 chunks +25 lines, -11 lines 0 comments Download
M chrome/browser/media_galleries/media_galleries_preferences.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 19 chunks +115 lines, -36 lines 0 comments Download
M chrome/browser/media_galleries/media_galleries_preferences_unittest.cc View 2 chunks +4 lines, -0 lines 0 comments Download
M chrome/browser/media_galleries/win/mtp_device_delegate_impl_win_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +2 lines, -1 line 0 comments Download
M chrome/browser/storage_monitor/storage_monitor.h View 1 2 3 4 5 3 chunks +3 lines, -3 lines 0 comments Download
M chrome/browser/storage_monitor/storage_monitor.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M chrome/browser/ui/webui/options/media_galleries_handler.h View 1 2 3 4 5 6 7 8 9 1 chunk +4 lines, -4 lines 0 comments Download
M chrome/browser/ui/webui/options/media_galleries_handler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +14 lines, -8 lines 0 comments Download

Messages

Total messages: 27 (0 generated)
tommycli
gbillock/vandebo: This fixes the race, but it also bloats the SLOC count and makes things ...
7 years, 3 months ago (2013-09-19 19:02:53 UTC) #1
tommycli
gbillock: Since this is based on your StorageMonitor work, you have the privilege of reviewing ...
7 years, 3 months ago (2013-09-20 22:53:24 UTC) #2
Lei Zhang
https://codereview.chromium.org/24269007/diff/22002/chrome/browser/media_galleries/fileapi/picasa_finder.cc File chrome/browser/media_galleries/fileapi/picasa_finder.cc (right): https://codereview.chromium.org/24269007/diff/22002/chrome/browser/media_galleries/fileapi/picasa_finder.cc#newcode54 chrome/browser/media_galleries/fileapi/picasa_finder.cc:54: callback.Run(device_id); You need to update the FindPicasaDatabase() comment to ...
7 years, 3 months ago (2013-09-20 23:55:28 UTC) #3
Lei Zhang
https://codereview.chromium.org/24269007/diff/22002/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc File chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc (right): https://codereview.chromium.org/24269007/diff/22002/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc#newcode125 chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc:125: // Make sure MediaGalleriesPreferences and StorageMonitor are initialized. Whether ...
7 years, 3 months ago (2013-09-21 00:12:34 UTC) #4
Lei Zhang
https://codereview.chromium.org/24269007/diff/26001/chrome/browser/media_galleries/media_galleries_preferences.h File chrome/browser/media_galleries/media_galleries_preferences.h (right): https://codereview.chromium.org/24269007/diff/26001/chrome/browser/media_galleries/media_galleries_preferences.h#newcode306 chrome/browser/media_galleries/media_galleries_preferences.h:306: base::ThreadChecker thread_checker_; If we know MediaGalleriesPreferences must run on ...
7 years, 3 months ago (2013-09-21 00:36:05 UTC) #5
vandebo (ex-Chrome)
https://codereview.chromium.org/24269007/diff/26001/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc File chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc (right): https://codereview.chromium.org/24269007/diff/26001/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc#newcode130 chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc:130: g_browser_process->media_file_system_registry() nit: storing either registry or preferences into a ...
7 years, 3 months ago (2013-09-21 01:20:59 UTC) #6
vandebo (ex-Chrome)
https://codereview.chromium.org/24269007/diff/68001/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc File chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc (right): https://codereview.chromium.org/24269007/diff/68001/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc#newcode94 chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc:94: DCHECK(preferences->IsInitialized()); nit: this isn't really needed; aside from being ...
7 years, 3 months ago (2013-09-23 18:35:08 UTC) #7
tommycli
https://codereview.chromium.org/24269007/diff/22002/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc File chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc (right): https://codereview.chromium.org/24269007/diff/22002/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc#newcode125 chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc:125: // Make sure MediaGalleriesPreferences and StorageMonitor are initialized. On ...
7 years, 3 months ago (2013-09-23 20:39:07 UTC) #8
tommycli
ping OWNER/s for review
7 years, 2 months ago (2013-09-26 16:20:00 UTC) #9
vandebo (ex-Chrome)
LGTM with some nits. https://codereview.chromium.org/24269007/diff/122001/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc File chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc (right): https://codereview.chromium.org/24269007/diff/122001/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc#newcode261 chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc:261: DCHECK(preferences->IsInitialized()); nit: remove https://codereview.chromium.org/24269007/diff/122001/chrome/browser/media_galleries/media_file_system_registry.cc File ...
7 years, 2 months ago (2013-09-26 22:42:36 UTC) #10
tommycli
One of the below is not a 'Done'. Ima give you a chance to object ...
7 years, 2 months ago (2013-09-26 23:53:32 UTC) #11
Lei Zhang
https://codereview.chromium.org/24269007/diff/136001/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc File chrome/browser/extensions/api/media_galleries/media_galleries_api.cc (right): https://codereview.chromium.org/24269007/diff/136001/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc#newcode247 chrome/browser/extensions/api/media_galleries/media_galleries_api.cc:247: DCHECK(StorageMonitor::GetInstance()->IsInitialized()); This file probably shouldn't reference StorageMonitor anymore. Remove ...
7 years, 2 months ago (2013-09-27 00:24:25 UTC) #12
vandebo (ex-Chrome)
https://codereview.chromium.org/24269007/diff/122001/chrome/browser/media_galleries/media_galleries_preferences.cc File chrome/browser/media_galleries/media_galleries_preferences.cc (right): https://codereview.chromium.org/24269007/diff/122001/chrome/browser/media_galleries/media_galleries_preferences.cc#newcode362 chrome/browser/media_galleries/media_galleries_preferences.cc:362: pre_initialization_callbacks_waiting_ = 2; On 2013/09/26 23:53:33, tommycli wrote: > ...
7 years, 2 months ago (2013-09-27 17:07:27 UTC) #13
tommycli
thestig: I removed all the DCHECKS in OnPreferencesInit methods since it's pretty obvious and they ...
7 years, 2 months ago (2013-09-27 17:54:46 UTC) #14
vandebo (ex-Chrome)
I'm happy - LGTM
7 years, 2 months ago (2013-09-27 18:33:53 UTC) #15
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/tommycli@chromium.org/24269007/184001
7 years, 2 months ago (2013-09-27 19:34:12 UTC) #16
commit-bot: I haz the power
Failed to apply patch for chrome/browser/media_galleries/media_galleries_preferences.cc: While running patch -p1 --forward --force --no-backup-if-mismatch; patching file ...
7 years, 2 months ago (2013-09-27 19:34:23 UTC) #17
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/tommycli@chromium.org/24269007/206001
7 years, 2 months ago (2013-09-27 20:17:58 UTC) #18
commit-bot: I haz the power
Retried try job too often on chromium_presubmit for step(s) presubmit http://build.chromium.org/p/tryserver.chromium/buildstatus?builder=chromium_presubmit&number=27846
7 years, 2 months ago (2013-09-27 22:46:23 UTC) #19
Lei Zhang
lgtm++ https://codereview.chromium.org/24269007/diff/206001/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc File chrome/browser/extensions/api/media_galleries/media_galleries_api.cc (right): https://codereview.chromium.org/24269007/diff/206001/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc#newcode26 chrome/browser/extensions/api/media_galleries/media_galleries_api.cc:26: #include "chrome/browser/storage_monitor/storage_monitor.h" You can remove storage_monitor.h BTW.
7 years, 2 months ago (2013-09-27 23:54:43 UTC) #20
tommycli
https://codereview.chromium.org/24269007/diff/206001/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc File chrome/browser/extensions/api/media_galleries/media_galleries_api.cc (right): https://codereview.chromium.org/24269007/diff/206001/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc#newcode26 chrome/browser/extensions/api/media_galleries/media_galleries_api.cc:26: #include "chrome/browser/storage_monitor/storage_monitor.h" On 2013/09/27 23:54:44, Lei Zhang wrote: > ...
7 years, 2 months ago (2013-09-28 00:19:49 UTC) #21
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/tommycli@chromium.org/24269007/220001
7 years, 2 months ago (2013-09-28 00:37:42 UTC) #22
commit-bot: I haz the power
Retried try job too often on win_rel for step(s) unit_tests http://build.chromium.org/p/tryserver.chromium/buildstatus?builder=win_rel&number=203302
7 years, 2 months ago (2013-09-28 04:22:28 UTC) #23
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/tommycli@chromium.org/24269007/220001
7 years, 2 months ago (2013-09-30 16:16:13 UTC) #24
commit-bot: I haz the power
Retried try job too often on win7_aura for step(s) unit_tests http://build.chromium.org/p/tryserver.chromium/buildstatus?builder=win7_aura&number=84142
7 years, 2 months ago (2013-09-30 18:16:20 UTC) #25
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/tommycli@chromium.org/24269007/243001
7 years, 2 months ago (2013-09-30 20:26:37 UTC) #26
commit-bot: I haz the power
7 years, 2 months ago (2013-10-01 03:34:05 UTC) #27
Message was sent while issue was closed.
Change committed as 226127

Powered by Google App Engine
This is Rietveld 408576698