diff options
| author | skyostil <skyostil@chromium.org> | 2015-03-04 12:20:46 -0800 | 
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2015-03-04 20:21:19 +0000 | 
| commit | f28ccd0b2709832d05156bd107d29d48a4a440cc (patch) | |
| tree | 48bb3c6a2bd75e833331a80642a793df7945bafc | |
| parent | 3ec467e4a16884c3855745e2f7513132098a4e36 (diff) | |
| download | chromium_src-f28ccd0b2709832d05156bd107d29d48a4a440cc.zip chromium_src-f28ccd0b2709832d05156bd107d29d48a4a440cc.tar.gz chromium_src-f28ccd0b2709832d05156bd107d29d48a4a440cc.tar.bz2 | |
content: Refactor ChildThreadImpl::Options
Refactor the way options are passed to ChildThreadImpl to make the
call sites easier to read and to make it easier to add a task runner
parameter later.
BUG=444764
Review URL: https://codereview.chromium.org/974933002
Cr-Commit-Position: refs/heads/master@{#319117}
| -rw-r--r-- | content/child/child_thread_impl.cc | 40 | ||||
| -rw-r--r-- | content/child/child_thread_impl.h | 43 | ||||
| -rw-r--r-- | content/gpu/gpu_child_thread.cc | 11 | ||||
| -rw-r--r-- | content/renderer/render_thread_impl.cc | 17 | ||||
| -rw-r--r-- | content/utility/utility_thread_impl.cc | 5 | 
5 files changed, 88 insertions, 28 deletions
| diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc index 8acc37d..f62222c 100644 --- a/content/child/child_thread_impl.cc +++ b/content/child/child_thread_impl.cc @@ -248,18 +248,40 @@ ChildThreadImpl::Options::Options()        in_browser_process(false) {  } -ChildThreadImpl::Options::Options(bool mojo) -    : channel_name(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( -          switches::kProcessChannelID)), -      use_mojo_channel(mojo), -      in_browser_process(true) { +ChildThreadImpl::Options::~Options() {  } -ChildThreadImpl::Options::Options(std::string name, bool mojo) -    : channel_name(name), use_mojo_channel(mojo), in_browser_process(true) { +ChildThreadImpl::Options::Builder::Builder() {  } -ChildThreadImpl::Options::~Options() { +ChildThreadImpl::Options::Builder& +ChildThreadImpl::Options::Builder::InBrowserProcess(bool in_browser_process) { +  options_.in_browser_process = in_browser_process; +  return *this; +} + +ChildThreadImpl::Options::Builder& +ChildThreadImpl::Options::Builder::UseMojoChannel(bool use_mojo_channel) { +  options_.use_mojo_channel = use_mojo_channel; +  return *this; +} + +ChildThreadImpl::Options::Builder& +ChildThreadImpl::Options::Builder::WithChannelName( +    const std::string& channel_name) { +  options_.channel_name = channel_name; +  return *this; +} + +ChildThreadImpl::Options::Builder& +ChildThreadImpl::Options::Builder::AddStartupFilter( +    IPC::MessageFilter* filter) { +  options_.startup_filters.push_back(filter); +  return *this; +} + +ChildThreadImpl::Options ChildThreadImpl::Options::Builder::Build() { +  return options_;  }  ChildThreadImpl::ChildThreadMessageRouter::ChildThreadMessageRouter( @@ -274,7 +296,7 @@ ChildThreadImpl::ChildThreadImpl()      : router_(this),        in_browser_process_(false),        channel_connected_factory_(this) { -  Init(Options()); +  Init(Options::Builder().Build());  }  ChildThreadImpl::ChildThreadImpl(const Options& options) diff --git a/content/child/child_thread_impl.h b/content/child/child_thread_impl.h index b6094b5..03727d6 100644 --- a/content/child/child_thread_impl.h +++ b/content/child/child_thread_impl.h @@ -62,17 +62,7 @@ class CONTENT_EXPORT ChildThreadImpl      : public IPC::Listener,        virtual public ChildThread {   public: -  struct CONTENT_EXPORT Options { -    Options(); -    explicit Options(bool mojo); -    Options(std::string name, bool mojo); -    ~Options(); - -    std::string channel_name; -    bool use_mojo_channel; -    bool in_browser_process; -    std::vector<IPC::MessageFilter*> startup_filters; -  }; +  struct CONTENT_EXPORT Options;    // Creates the thread.    ChildThreadImpl(); @@ -315,6 +305,37 @@ class CONTENT_EXPORT ChildThreadImpl    DISALLOW_COPY_AND_ASSIGN(ChildThreadImpl);  }; +struct ChildThreadImpl::Options { +  ~Options(); + +  class Builder; + +  std::string channel_name; +  bool use_mojo_channel; +  bool in_browser_process; +  std::vector<IPC::MessageFilter*> startup_filters; + + private: +  Options(); +}; + +class ChildThreadImpl::Options::Builder { + public: +  Builder(); + +  Builder& InBrowserProcess(bool in_browser_process); +  Builder& UseMojoChannel(bool use_mojo_channel); +  Builder& WithChannelName(const std::string& channel_name); +  Builder& AddStartupFilter(IPC::MessageFilter* filter); + +  Options Build(); + + private: +  struct Options options_; + +  DISALLOW_COPY_AND_ASSIGN(Builder); +}; +  }  // namespace content  #endif  // CONTENT_CHILD_CHILD_THREAD_IMPL_H_ diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc index 1064a70..901618e 100644 --- a/content/gpu/gpu_child_thread.cc +++ b/content/gpu/gpu_child_thread.cc @@ -45,17 +45,17 @@ bool GpuProcessLogMessageHandler(int severity,  }  ChildThreadImpl::Options GetOptions() { -  ChildThreadImpl::Options options; +  ChildThreadImpl::Options::Builder builder;  #if defined(USE_OZONE)    IPC::MessageFilter* message_filter = ui::OzonePlatform::GetInstance()                                             ->GetGpuPlatformSupport()                                             ->GetMessageFilter();    if (message_filter) -    options.startup_filters.push_back(message_filter); +    builder.AddStartupFilter(message_filter);  #endif -  return options; +  return builder.Build();  }  }  // namespace @@ -77,7 +77,10 @@ GpuChildThread::GpuChildThread(GpuWatchdogThread* watchdog_thread,  }  GpuChildThread::GpuChildThread(const std::string& channel_id) -    : ChildThreadImpl(Options(channel_id, false)), +    : ChildThreadImpl(Options::Builder() +                          .InBrowserProcess(true) +                          .WithChannelName(channel_id) +                          .Build()),        dead_on_arrival_(false),        in_browser_process_(true) {  #if defined(OS_WIN) diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index a5a3917..0291a86 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -433,18 +433,29 @@ RenderThreadImpl* RenderThreadImpl::current() {  // When we run plugins in process, we actually run them on the render thread,  // which means that we need to make the render thread pump UI events.  RenderThreadImpl::RenderThreadImpl() -    : ChildThreadImpl(Options(ShouldUseMojoChannel())) { +    : ChildThreadImpl(Options::Builder() +                          .InBrowserProcess(true) +                          .UseMojoChannel(ShouldUseMojoChannel()) +                          .Build()) {    Init();  }  RenderThreadImpl::RenderThreadImpl(const std::string& channel_name) -    : ChildThreadImpl(Options(channel_name, ShouldUseMojoChannel())) { +    : ChildThreadImpl(Options::Builder() +                          .InBrowserProcess(true) +                          .UseMojoChannel(ShouldUseMojoChannel()) +                          .WithChannelName(channel_name) +                          .Build()) {    Init();  }  RenderThreadImpl::RenderThreadImpl(      scoped_ptr<base::MessageLoop> main_message_loop) -    : ChildThreadImpl(Options(ShouldUseMojoChannel())), +    : ChildThreadImpl(Options::Builder() +                          // TODO(skyostil): This should be set to false. +                          .InBrowserProcess(true) +                          .UseMojoChannel(ShouldUseMojoChannel()) +                          .Build()),        main_message_loop_(main_message_loop.Pass()) {    Init();  } diff --git a/content/utility/utility_thread_impl.cc b/content/utility/utility_thread_impl.cc index 26af2b1..d1b9bfa 100644 --- a/content/utility/utility_thread_impl.cc +++ b/content/utility/utility_thread_impl.cc @@ -40,7 +40,10 @@ UtilityThreadImpl::UtilityThreadImpl() : single_process_(false) {  }  UtilityThreadImpl::UtilityThreadImpl(const std::string& channel_name) -    : ChildThreadImpl(Options(channel_name, false)), +    : ChildThreadImpl(Options::Builder() +                          .InBrowserProcess(true) +                          .WithChannelName(channel_name) +                          .Build()),        single_process_(true) {    Init();  } | 
