Perf: Update size expectations on linux-rel
[chromium-blink-merge.git] / mojo / application / application_runner_chromium.cc
blobfa139c72d25e051e544a4454668dd6784a292c31
1 // Copyright 2014 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.
5 #include "mojo/application/application_runner_chromium.h"
7 #include "base/at_exit.h"
8 #include "base/command_line.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h"
11 #include "mojo/common/message_pump_mojo.h"
12 #include "mojo/public/cpp/application/application_delegate.h"
13 #include "mojo/public/cpp/application/application_impl.h"
15 namespace mojo {
17 // static
18 void ApplicationImpl::Terminate() {
19 if (base::MessageLoop::current()->is_running())
20 base::MessageLoop::current()->Quit();
23 ApplicationRunnerChromium::ApplicationRunnerChromium(
24 ApplicationDelegate* delegate)
25 : delegate_(scoped_ptr<ApplicationDelegate>(delegate)),
26 message_loop_type_(base::MessageLoop::TYPE_CUSTOM),
27 has_run_(false) {}
29 ApplicationRunnerChromium::~ApplicationRunnerChromium() {}
31 void ApplicationRunnerChromium::set_message_loop_type(
32 base::MessageLoop::Type type) {
33 DCHECK_NE(base::MessageLoop::TYPE_CUSTOM, type);
34 DCHECK(!has_run_);
36 message_loop_type_ = type;
39 MojoResult ApplicationRunnerChromium::Run(MojoHandle shell_handle) {
40 DCHECK(!has_run_);
41 has_run_ = true;
43 base::CommandLine::Init(0, NULL);
44 #if !defined(COMPONENT_BUILD)
45 base::AtExitManager at_exit;
46 #endif
49 scoped_ptr<base::MessageLoop> loop;
50 if (message_loop_type_ == base::MessageLoop::TYPE_CUSTOM)
51 loop.reset(new base::MessageLoop(common::MessagePumpMojo::Create()));
52 else
53 loop.reset(new base::MessageLoop(message_loop_type_));
55 ApplicationImpl impl(delegate_.get(),
56 MakeScopedHandle(MessagePipeHandle(shell_handle)));
57 loop->Run();
59 delegate_.reset();
60 return MOJO_RESULT_OK;
63 } // namespace mojo