context.cc revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
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
16namespace mojo {
17namespace shell {
18
19Context::Context()
20    : task_runners_(base::MessageLoop::current()->message_loop_proxy()),
21      storage_(),
22      loader_(task_runners_.io_runner(),
23              task_runners_.file_runner(),
24              task_runners_.cache_runner(),
25              scoped_ptr<net::NetworkDelegate>(new NetworkDelegate()),
26              storage_.profile_path()) {
27  embedder::Init();
28  gles2::GLES2SupportImpl::Init();
29
30  scoped_ptr<DynamicServiceRunnerFactory> runner_factory;
31  if (CommandLine::ForCurrentProcess()->HasSwitch(
32          switches::kEnableMultiprocess))
33    runner_factory.reset(new OutOfProcessDynamicServiceRunnerFactory());
34  else
35    runner_factory.reset(new InProcessDynamicServiceRunnerFactory());
36  dynamic_service_loader_.reset(
37      new DynamicServiceLoader(this, runner_factory.Pass()));
38  service_manager_.set_default_loader(dynamic_service_loader_.get());
39}
40
41Context::~Context() {
42  service_manager_.set_default_loader(NULL);
43}
44
45}  // namespace shell
46}  // namespace mojo
47