context.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "mojo/shell/context.h" 6 7#include "base/command_line.h" 8#include "mojo/embedder/embedder.h" 9#include "mojo/gles2/gles2_support_impl.h" 10#include "mojo/shell/dynamic_service_loader.h" 11#include "mojo/shell/in_process_dynamic_service_runner.h" 12#include "mojo/shell/network_delegate.h" 13#include "mojo/shell/out_of_process_dynamic_service_runner.h" 14#include "mojo/shell/switches.h" 15#include "mojo/spy/spy.h" 16 17namespace mojo { 18namespace shell { 19 20Context::Context() 21 : task_runners_(base::MessageLoop::current()->message_loop_proxy()), 22 storage_(), 23 loader_(task_runners_.io_runner(), 24 task_runners_.file_runner(), 25 task_runners_.cache_runner(), 26 scoped_ptr<net::NetworkDelegate>(new NetworkDelegate()), 27 storage_.profile_path()) { 28 embedder::Init(); 29 gles2::GLES2SupportImpl::Init(); 30 31 CommandLine* cmdline = CommandLine::ForCurrentProcess(); 32 scoped_ptr<DynamicServiceRunnerFactory> runner_factory; 33 if (cmdline->HasSwitch(switches::kEnableMultiprocess)) 34 runner_factory.reset(new OutOfProcessDynamicServiceRunnerFactory()); 35 else 36 runner_factory.reset(new InProcessDynamicServiceRunnerFactory()); 37 38 dynamic_service_loader_.reset( 39 new DynamicServiceLoader(this, runner_factory.Pass())); 40 service_manager_.set_default_loader(dynamic_service_loader_.get()); 41 42 if (cmdline->HasSwitch(switches::kSpy)) { 43 spy_.reset(new mojo::Spy(&service_manager_, 44 cmdline->GetSwitchValueASCII(switches::kSpy))); 45 } 46} 47 48Context::~Context() { 49 service_manager_.set_default_loader(NULL); 50} 51 52} // namespace shell 53} // namespace mojo 54