Skip to content

Commit

Permalink
Remove header dependencies from sequence_checker.h to sequenced_worke…
Browse files Browse the repository at this point in the history
…r_pool.h

This CL removes #include to sequenced_worker_pool.h in sequence_checker.h
by hiding its members into a nested class, and adds #include and forward
decls to other files as needed.

Note that the non trivial diffs are in sequence_checker_impl.{h,cc} only.

The header dependency from sequence_checker.h to sequenced_worker_pool.h
prevents other headers to use sequence_checker.h due to a dependency
cycle.

TBR=sky@chromium.org, kinuko@chromium.org, rdsmith@chromium.org, qinmin@chromium.org, marq@chromium.org, rockot@chromium.org, blundell@chromium.org, oshima@chromium.org, slan@chromium.org, boliu@chromium.org

Review-Url: https://codereview.chromium.org/2690533002
Cr-Commit-Position: refs/heads/master@{#450321}
  • Loading branch information
tzik authored and Commit bot committed Feb 14, 2017
1 parent 0a762e4 commit d502a3f
Show file tree
Hide file tree
Showing 198 changed files with 289 additions and 61 deletions.
1 change: 1 addition & 0 deletions android_webview/native/aw_metrics_service_client_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "base/files/file_util.h"
#include "base/guid.h"
#include "base/i18n/rtl.h"
#include "base/threading/sequenced_worker_pool.h"
#include "components/metrics/call_stack_profile_metrics_provider.h"
#include "components/metrics/enabled_state_provider.h"
#include "components/metrics/gpu/gpu_metrics_provider.h"
Expand Down
1 change: 1 addition & 0 deletions ash/common/system/tray/system_tray_notifier.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "ash/ash_export.h"
#include "ash/common/accessibility_types.h"
#include "base/callback_forward.h"
#include "base/macros.h"
#include "base/observer_list.h"
#include "base/strings/string16.h"
Expand Down
1 change: 1 addition & 0 deletions ash/common/wm_shell.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
#include "base/bind.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "services/preferences/public/cpp/pref_client_store.h"
#include "services/preferences/public/interfaces/preferences.mojom.h"
#include "services/service_manager/public/cpp/connector.h"
Expand Down
1 change: 1 addition & 0 deletions ash/mus/window_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include "ash/shell_init_params.h"
#include "ash/wm/ash_focus_rules.h"
#include "base/memory/ptr_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "services/service_manager/public/cpp/connector.h"
#include "services/ui/common/accelerator_util.h"
#include "services/ui/common/types.h"
Expand Down
1 change: 1 addition & 0 deletions ash/mus/window_manager_application.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "ash/mus/window_manager.h"
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chromeos/audio/cras_audio_handler.h"
#include "chromeos/dbus/dbus_thread_manager.h"
Expand Down
1 change: 1 addition & 0 deletions ash/shell.cc
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
#include "base/command_line.h"
#include "base/memory/ptr_util.h"
#include "base/sys_info.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/trace_event/trace_event.h"
#include "chromeos/audio/audio_a11y_controller.h"
#include "chromeos/chromeos_switches.h"
Expand Down
81 changes: 46 additions & 35 deletions base/sequence_checker_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,54 +5,65 @@
#include "base/sequence_checker_impl.h"

#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/sequence_token.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_checker_impl.h"

namespace base {

SequenceCheckerImpl::SequenceCheckerImpl() {
AutoLock auto_lock(lock_);
EnsureSequenceTokenAssigned();
}
class SequenceCheckerImpl::Core {
public:
Core()
: sequence_token_(SequenceToken::GetForCurrentThread()),
sequenced_worker_pool_token_(
SequencedWorkerPool::GetSequenceTokenForCurrentThread()) {
// SequencedWorkerPool doesn't use SequenceToken and code outside of
// SequenceWorkerPool doesn't set a SequencedWorkerPool token.
DCHECK(!sequence_token_.IsValid() ||
!sequenced_worker_pool_token_.IsValid());
}

SequenceCheckerImpl::~SequenceCheckerImpl() = default;
~Core() = default;

bool SequenceCheckerImpl::CalledOnValidSequence() const {
AutoLock auto_lock(lock_);
EnsureSequenceTokenAssigned();
bool CalledOnValidThread() const {
if (sequence_token_.IsValid())
return sequence_token_ == SequenceToken::GetForCurrentThread();

if (sequence_token_.IsValid())
return sequence_token_ == SequenceToken::GetForCurrentThread();
if (sequenced_worker_pool_token_.IsValid()) {
return sequenced_worker_pool_token_.Equals(
SequencedWorkerPool::GetSequenceTokenForCurrentThread());
}

if (sequenced_worker_pool_token_.IsValid()) {
return sequenced_worker_pool_token_.Equals(
SequencedWorkerPool::GetSequenceTokenForCurrentThread());
// SequenceChecker behaves as a ThreadChecker when it is not bound to a
// valid sequence token.
return thread_checker_.CalledOnValidThread();
}

// SequenceChecker behaves as a ThreadChecker when it is not bound to a valid
// sequence token.
return thread_checker_.CalledOnValidThread();
}
private:
SequenceToken sequence_token_;

void SequenceCheckerImpl::DetachFromSequence() {
AutoLock auto_lock(lock_);
is_assigned_ = false;
sequence_token_ = SequenceToken();
sequenced_worker_pool_token_ = SequencedWorkerPool::SequenceToken();
thread_checker_.DetachFromThread();
}
// TODO(gab): Remove this when SequencedWorkerPool is deprecated in favor of
// TaskScheduler. crbug.com/622400
SequencedWorkerPool::SequenceToken sequenced_worker_pool_token_;

// Used when |sequenced_worker_pool_token_| and |sequence_token_| are invalid.
ThreadCheckerImpl thread_checker_;
};

void SequenceCheckerImpl::EnsureSequenceTokenAssigned() const {
lock_.AssertAcquired();
if (is_assigned_)
return;
SequenceCheckerImpl::SequenceCheckerImpl() : core_(MakeUnique<Core>()) {}
SequenceCheckerImpl::~SequenceCheckerImpl() = default;

is_assigned_ = true;
sequence_token_ = SequenceToken::GetForCurrentThread();
sequenced_worker_pool_token_ =
SequencedWorkerPool::GetSequenceTokenForCurrentThread();
bool SequenceCheckerImpl::CalledOnValidSequence() const {
AutoLock auto_lock(lock_);
if (!core_)
core_ = MakeUnique<Core>();
return core_->CalledOnValidThread();
}

// SequencedWorkerPool doesn't use SequenceToken and code outside of
// SequenceWorkerPool doesn't set a SequencedWorkerPool token.
DCHECK(!sequence_token_.IsValid() || !sequenced_worker_pool_token_.IsValid());
void SequenceCheckerImpl::DetachFromSequence() {
AutoLock auto_lock(lock_);
core_.reset();
}

} // namespace base
20 changes: 4 additions & 16 deletions base/sequence_checker_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
#ifndef BASE_SEQUENCE_CHECKER_IMPL_H_
#define BASE_SEQUENCE_CHECKER_IMPL_H_

#include <memory>

#include "base/base_export.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/sequence_token.h"
#include "base/synchronization/lock.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_checker_impl.h"

namespace base {

Expand All @@ -35,22 +34,11 @@ class BASE_EXPORT SequenceCheckerImpl {
void DetachFromSequence();

private:
void EnsureSequenceTokenAssigned() const;
class Core;

// Guards all variables below.
mutable Lock lock_;

// True when the SequenceChecker is bound to a sequence or a thread.
mutable bool is_assigned_ = false;

mutable SequenceToken sequence_token_;

// TODO(gab): Remove this when SequencedWorkerPool is deprecated in favor of
// TaskScheduler. crbug.com/622400
mutable SequencedWorkerPool::SequenceToken sequenced_worker_pool_token_;

// Used when |sequenced_worker_pool_token_| and |sequence_token_| are invalid.
ThreadCheckerImpl thread_checker_;
mutable std::unique_ptr<Core> core_;

DISALLOW_COPY_AND_ASSIGN(SequenceCheckerImpl);
};
Expand Down
1 change: 1 addition & 0 deletions base/test/launcher/test_launcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ namespace base {
class CommandLine;
struct LaunchOptions;
class SequencedWorkerPoolOwner;
class TaskRunner;
class TestLauncher;
class Thread;

Expand Down
1 change: 1 addition & 0 deletions chrome/browser/android/logo_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/image_decoder.h"
#include "chrome/browser/profiles/profile.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/android/metrics/uma_session_stats.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/time/time.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "base/sequenced_task_runner.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/android/offline_pages/background_loader_offliner.h"
#include "chrome/browser/android/offline_pages/background_scheduler_bridge.h"
#include "chrome/browser/android/offline_pages/downloads/offline_page_notification_bridge.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "base/files/file_path.h"
#include "base/memory/singleton.h"
#include "base/sequenced_task_runner.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/profiles/incognito_helpers.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_constants.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_number_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
#include "chrome/browser/android/offline_pages/offline_page_tab_helper.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "base/memory/ptr_util.h"
#include "base/memory/singleton.h"
#include "base/sequenced_task_runner.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/android/offline_pages/background_loader_offliner.h"
#include "chrome/browser/android/offline_pages/background_scheduler_bridge.h"
#include "chrome/browser/android/offline_pages/downloads/offline_page_notification_bridge.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/android/shortcut_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "base/command_line.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/android/webapk/chrome_webapk_host.h"
#include "chrome/browser/android/webapk/webapk_install_service.h"
#include "chrome/browser/manifest/manifest_icon_downloader.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "base/callback.h"
#include "base/location.h"
#include "base/strings/string16.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/android/offline_pages/offline_page_utils.h"
#include "chrome/browser/android/shortcut_helper.h"
#include "chrome/browser/android/webapk/webapk_web_manifest_checker.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "base/memory/ptr_util.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/android/banners/app_banner_infobar_delegate_android.h"
#include "chrome/browser/android/shortcut_helper.h"
#include "chrome/browser/android/webapk/chrome_webapk_host.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/apps/drive/drive_service_bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "base/logging.h"
#include "base/macros.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/drive/drive_notification_manager_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/browser_process_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "base/path_service.h"
#include "base/single_thread_task_runner.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h"
#include "base/threading/thread_task_runner_handle.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/budget_service/budget_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "base/callback.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "chrome/browser/engagement/site_engagement_score.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/values.h"
#include "build/build_config.h"
#include "chrome/browser/captive_portal/captive_portal_service.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chrome_browser_main_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "base/scoped_native_library.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/win/pe_image.h"
#include "base/win/registry.h"
#include "base/win/win_util.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "base/run_loop.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chromeos/chromeos_switches.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "base/strings/stringprintf.h"
#include "base/sys_info.h"
#include "base/task_scheduler/post_task.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/version.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/app_mode/app_session.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chromeos/arc/arc_service_launcher.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_service.h"
#include "chrome/browser/chromeos/arc/accessibility/arc_accessibility_helper_bridge.h"
#include "chrome/browser/chromeos/arc/arc_auth_service.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <unistd.h>

#include "base/files/file.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner_util.h"
#include "content/public/browser/browser_thread.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chromeos/arc/process/arc_process_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "base/process/process.h"
#include "base/process/process_iterator.h"
#include "base/task_runner_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/trace_event/trace_event.h"
#include "components/arc/arc_bridge_service.h"
#include "content/public/browser/browser_thread.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chromeos/base/file_flusher_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "base/macros.h"
#include "base/run_loop.h"
#include "base/strings/stringprintf.h"
#include "base/threading/sequenced_worker_pool.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <utility>

#include "base/files/file_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/load_flags.h"
#include "net/http/http_status_code.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chromeos/external_metrics.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/metrics/sparse_histogram.h"
#include "base/metrics/statistics_recorder.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/metrics/chromeos_metrics_provider.h"
#include "components/metrics/metrics_service.h"
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/chromeos/file_manager/snapshot_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "base/bind.h"
#include "base/sys_info.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/chromeos/file_manager/app_id.h"
#include "chrome/browser/chromeos/file_manager/fileapi_util.h"
#include "chrome/browser/profiles/profile.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "base/strings/string_util.h"
#include "base/task_runner.h"
#include "base/task_runner_util.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/browser_process.h"
#include "chrome/common/pref_names.h"
#include "components/pref_registry/pref_registry_syncable.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/run_loop.h"
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/chromeos/login/screenshot_testing/SkDiffPixelsMetric.h"
#include "chrome/browser/chromeos/login/screenshot_testing/SkImageDiffer.h"
#include "chrome/browser/chromeos/login/screenshot_testing/SkPMetric.h"
Expand Down
Loading

0 comments on commit d502a3f

Please sign in to comment.