mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This updates to mojo commit d259eb58aa59 and limits the roll script to only pull in the parts of //mojo that are currently being used. More stuff will be dropped in the future.
69 lines
2.0 KiB
C++
69 lines
2.0 KiB
C++
// Copyright 2014 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "mojo/application/application_runner_chromium.h"
|
|
|
|
#include "base/at_exit.h"
|
|
#include "base/command_line.h"
|
|
#include "base/debug/stack_trace.h"
|
|
#include "base/memory/scoped_ptr.h"
|
|
#include "base/message_loop/message_loop.h"
|
|
#include "mojo/message_pump/message_pump_mojo.h"
|
|
#include "mojo/public/cpp/application/application_delegate.h"
|
|
#include "mojo/public/cpp/application/application_impl.h"
|
|
|
|
namespace mojo {
|
|
|
|
// static
|
|
void ApplicationImpl::Terminate() {
|
|
if (base::MessageLoop::current()->is_running())
|
|
base::MessageLoop::current()->Quit();
|
|
}
|
|
|
|
ApplicationRunnerChromium::ApplicationRunnerChromium(
|
|
ApplicationDelegate* delegate)
|
|
: delegate_(scoped_ptr<ApplicationDelegate>(delegate)),
|
|
message_loop_type_(base::MessageLoop::TYPE_CUSTOM),
|
|
has_run_(false) {}
|
|
|
|
ApplicationRunnerChromium::~ApplicationRunnerChromium() {}
|
|
|
|
void ApplicationRunnerChromium::set_message_loop_type(
|
|
base::MessageLoop::Type type) {
|
|
DCHECK_NE(base::MessageLoop::TYPE_CUSTOM, type);
|
|
DCHECK(!has_run_);
|
|
|
|
message_loop_type_ = type;
|
|
}
|
|
|
|
MojoResult ApplicationRunnerChromium::Run(
|
|
MojoHandle application_request_handle) {
|
|
DCHECK(!has_run_);
|
|
has_run_ = true;
|
|
|
|
base::CommandLine::Init(0, NULL);
|
|
base::AtExitManager at_exit;
|
|
|
|
#if !defined(NDEBUG) && !defined(OS_NACL)
|
|
base::debug::EnableInProcessStackDumping();
|
|
#endif
|
|
|
|
{
|
|
scoped_ptr<base::MessageLoop> loop;
|
|
if (message_loop_type_ == base::MessageLoop::TYPE_CUSTOM)
|
|
loop.reset(new base::MessageLoop(common::MessagePumpMojo::Create()));
|
|
else
|
|
loop.reset(new base::MessageLoop(message_loop_type_));
|
|
|
|
ApplicationImpl impl(delegate_.get(),
|
|
MakeRequest<Application>(MakeScopedHandle(
|
|
MessagePipeHandle(application_request_handle))));
|
|
loop->Run();
|
|
}
|
|
delegate_.reset();
|
|
return MOJO_RESULT_OK;
|
|
}
|
|
|
|
} // namespace mojo
|