OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/fileapi/media_file_system_backend.h" | 5 #include "chrome/browser/media_galleries/fileapi/media_file_system_backend.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/lazy_instance.h" | |
13 #include "base/logging.h" | 14 #include "base/logging.h" |
14 #include "base/sequenced_task_runner.h" | 15 #include "base/sequenced_task_runner.h" |
15 #include "base/strings/string_number_conversions.h" | 16 #include "base/strings/string_number_conversions.h" |
16 #include "base/strings/string_util.h" | 17 #include "base/strings/string_util.h" |
17 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
18 #include "base/threading/sequenced_worker_pool.h" | 19 #include "base/threading/sequenced_worker_pool.h" |
19 #include "base/threading/thread_task_runner_handle.h" | 20 #include "base/threading/thread_task_runner_handle.h" |
20 #include "build/build_config.h" | 21 #include "build/build_config.h" |
21 #include "chrome/browser/browser_process.h" | 22 #include "chrome/browser/browser_process.h" |
22 #include "chrome/browser/extensions/extension_service.h" | 23 #include "chrome/browser/extensions/extension_service.h" |
(...skipping 27 matching lines...) Expand all Loading... | |
50 #include "chrome/browser/media_galleries/fileapi/picasa_file_util.h" | 51 #include "chrome/browser/media_galleries/fileapi/picasa_file_util.h" |
51 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 52 #endif // defined(OS_WIN) || defined(OS_MACOSX) |
52 | 53 |
53 using storage::FileSystemContext; | 54 using storage::FileSystemContext; |
54 using storage::FileSystemURL; | 55 using storage::FileSystemURL; |
55 | 56 |
56 namespace { | 57 namespace { |
57 | 58 |
58 const char kMediaGalleryMountPrefix[] = "media_galleries-"; | 59 const char kMediaGalleryMountPrefix[] = "media_galleries-"; |
59 | 60 |
61 #if DCHECK_IS_ON() | |
62 base::LazyInstance<base::SequenceChecker>::Leaky g_media_sequence_checker = | |
63 LAZY_INSTANCE_INITIALIZER; | |
64 #endif | |
65 | |
60 void OnPreferencesInit( | 66 void OnPreferencesInit( |
61 const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, | 67 const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter, |
62 const extensions::Extension* extension, | 68 const extensions::Extension* extension, |
63 MediaGalleryPrefId pref_id, | 69 MediaGalleryPrefId pref_id, |
64 const base::Callback<void(base::File::Error result)>& callback) { | 70 const base::Callback<void(base::File::Error result)>& callback) { |
65 content::WebContents* contents = web_contents_getter.Run(); | 71 content::WebContents* contents = web_contents_getter.Run(); |
66 if (!contents) { | 72 if (!contents) { |
67 content::BrowserThread::PostTask( | 73 content::BrowserThread::PostTask( |
68 content::BrowserThread::IO, FROM_HERE, | 74 content::BrowserThread::IO, FROM_HERE, |
69 base::Bind(callback, base::File::FILE_ERROR_FAILED)); | 75 base::Bind(callback, base::File::FILE_ERROR_FAILED)); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
143 picasa_file_util_used_(false), | 149 picasa_file_util_used_(false), |
144 itunes_file_util_used_(false) | 150 itunes_file_util_used_(false) |
145 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 151 #endif // defined(OS_WIN) || defined(OS_MACOSX) |
146 { | 152 { |
147 } | 153 } |
148 | 154 |
149 MediaFileSystemBackend::~MediaFileSystemBackend() { | 155 MediaFileSystemBackend::~MediaFileSystemBackend() { |
150 } | 156 } |
151 | 157 |
152 // static | 158 // static |
153 bool MediaFileSystemBackend::CurrentlyOnMediaTaskRunnerThread() { | 159 void MediaFileSystemBackend::AssertCurrentlyOnMediaSequence() { |
154 base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool(); | 160 #if DCHECK_IS_ON() |
155 base::SequencedWorkerPool::SequenceToken media_sequence_token = | 161 DCHECK(g_media_sequence_checker.Get().CalledOnValidSequence()); |
Reilly Grant (use Gerrit)
2016/09/07 18:07:05
I don't like consolidating the DCHECK into a singl
fdoray
2016/09/07 19:21:51
I don't want a public CurrentlyOnMediaTaskRunnerTh
Reilly Grant (use Gerrit)
2016/09/07 20:58:55
I prefer option 2. Stack traces often do not inclu
| |
156 pool->GetNamedSequenceToken(kMediaTaskRunnerName); | 162 #endif |
157 return pool->IsRunningSequenceOnCurrentThread(media_sequence_token); | |
158 } | 163 } |
159 | 164 |
160 // static | 165 // static |
161 scoped_refptr<base::SequencedTaskRunner> | 166 scoped_refptr<base::SequencedTaskRunner> |
162 MediaFileSystemBackend::MediaTaskRunner() { | 167 MediaFileSystemBackend::MediaTaskRunner() { |
163 base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool(); | 168 base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool(); |
164 base::SequencedWorkerPool::SequenceToken media_sequence_token = | 169 base::SequencedWorkerPool::SequenceToken media_sequence_token = |
165 pool->GetNamedSequenceToken(kMediaTaskRunnerName); | 170 pool->GetNamedSequenceToken(kMediaTaskRunnerName); |
166 return pool->GetSequencedTaskRunner(media_sequence_token); | 171 return pool->GetSequencedTaskRunner(media_sequence_token); |
167 } | 172 } |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
379 | 384 |
380 const storage::ChangeObserverList* MediaFileSystemBackend::GetChangeObservers( | 385 const storage::ChangeObserverList* MediaFileSystemBackend::GetChangeObservers( |
381 storage::FileSystemType type) const { | 386 storage::FileSystemType type) const { |
382 return NULL; | 387 return NULL; |
383 } | 388 } |
384 | 389 |
385 const storage::AccessObserverList* MediaFileSystemBackend::GetAccessObservers( | 390 const storage::AccessObserverList* MediaFileSystemBackend::GetAccessObservers( |
386 storage::FileSystemType type) const { | 391 storage::FileSystemType type) const { |
387 return NULL; | 392 return NULL; |
388 } | 393 } |
OLD | NEW |