提交 2323a17a 编写于 作者: C Chinmay Garde 提交者: GitHub

Remove last reference to //base from //flutter/shell/platform/linux. (#3511)

上级 3f269db7
......@@ -10,11 +10,10 @@ executable("linux") {
]
deps = [
"//base",
"//dart/runtime/bin:embedded_dart_io",
"//flutter/common",
"//flutter/fml",
"//flutter/shell/common",
"//flutter/shell/gpu",
"//flutter/shell/testing",
"//lib/ftl",
"//lib/tonic",
......
......@@ -2,12 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/at_exit.h"
#include "base/basictypes.h"
#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "dart/runtime/bin/embedded_dart_io.h"
#include "flutter/common/threads.h"
#include "flutter/fml/message_loop.h"
#include "flutter/shell/common/platform_view.h"
#include "flutter/shell/common/shell.h"
#include "flutter/shell/common/switches.h"
......@@ -26,31 +23,29 @@ const int kErrorExitCode = 255;
// Checks whether the engine's main Dart isolate has no pending work. If so,
// then exit the given message loop.
class ScriptCompletionTaskObserver : public base::MessageLoop::TaskObserver {
class ScriptCompletionTaskObserver : public fml::TaskObserver {
public:
ScriptCompletionTaskObserver(base::MessageLoop& main_message_loop)
: main_message_loop_(main_message_loop),
ScriptCompletionTaskObserver(ftl::RefPtr<ftl::TaskRunner> task_runner)
: main_task_runner_(std::move(task_runner)),
prev_live_(false),
last_error_(tonic::kNoError) {}
void WillProcessTask(const base::PendingTask& pending_task) override {}
void DidProcessTask(const base::PendingTask& pending_task) override {
void DidProcessTask() override {
shell::TestRunner& test_runner = shell::TestRunner::Shared();
shell::Engine& engine = test_runner.platform_view().engine();
if (engine.GetLoadScriptError() != tonic::kNoError) {
last_error_ = engine.GetLoadScriptError();
main_message_loop_.PostTask(FROM_HERE,
main_message_loop_.QuitWhenIdleClosure());
main_task_runner_->PostTask(
[]() { fml::MessageLoop::GetCurrent().Terminate(); });
return;
}
bool live = engine.UIIsolateHasLivePorts();
if (prev_live_ && !live) {
last_error_ = engine.GetUIIsolateLastError();
main_message_loop_.PostTask(FROM_HERE,
main_message_loop_.QuitWhenIdleClosure());
main_task_runner_->PostTask(
[]() { fml::MessageLoop::GetCurrent().Terminate(); });
}
prev_live_ = live;
}
......@@ -58,7 +53,7 @@ class ScriptCompletionTaskObserver : public base::MessageLoop::TaskObserver {
tonic::DartErrorHandleType last_error() { return last_error_; }
private:
base::MessageLoop& main_message_loop_;
ftl::RefPtr<ftl::TaskRunner> main_task_runner_;
bool prev_live_;
tonic::DartErrorHandleType last_error_;
};
......@@ -78,25 +73,29 @@ int ConvertErrorTypeToExitCode(tonic::DartErrorHandleType error) {
void RunNonInteractive(ftl::CommandLine initial_command_line,
bool run_forever) {
base::MessageLoop message_loop;
// This is a platform thread (i.e not one created by fml::Thread), so perform
// one time initialization.
fml::MessageLoop::EnsureInitializedForCurrentThread();
shell::Shell::InitStandalone(initial_command_line);
// Note that this task observer must be added after the observer that drains
// the microtask queue.
ScriptCompletionTaskObserver task_observer(message_loop);
ScriptCompletionTaskObserver task_observer(
fml::MessageLoop::GetCurrent().GetTaskRunner());
if (!run_forever) {
blink::Threads::UI()->PostTask([&task_observer] {
base::MessageLoop::current()->AddTaskObserver(&task_observer);
fml::MessageLoop::GetCurrent().AddTaskObserver(&task_observer);
});
}
if (!shell::InitForTesting(std::move(initial_command_line))) {
if (!shell::InitForTesting(initial_command_line)) {
shell::PrintUsage("sky_shell");
exit(1);
exit(EXIT_FAILURE);
return;
}
message_loop.Run();
fml::MessageLoop::GetCurrent().Run();
shell::TestRunner& test_runner = shell::TestRunner::Shared();
tonic::DartErrorHandleType error =
......@@ -117,8 +116,6 @@ int main(int argc, char* argv[]) {
dart::bin::SetExecutableName(argv[0]);
dart::bin::SetExecutableArguments(argc - 1, argv);
base::AtExitManager exit_manager;
auto command_line = ftl::CommandLineFromArgcArgv(argc, argv);
if (command_line.HasOption(shell::FlagForSwitch(shell::Switch::Help))) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册