From 3c83f895ed7bf0a5e6d33a49b50c53b20f162991 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 2 Feb 2016 11:44:01 -0800 Subject: [PATCH] some work towards a --start-paused flag --- sky/engine/core/script/dart_init.cc | 7 +++++++ sky/engine/public/platform/sky_settings.h | 1 + .../android/org/domokit/sky/shell/SkyActivity.java | 3 +++ sky/shell/shell.cc | 1 + sky/shell/switches.cc | 2 ++ sky/shell/switches.h | 1 + sky/shell/tracing_controller.cc | 5 ++--- 7 files changed, 17 insertions(+), 3 deletions(-) diff --git a/sky/engine/core/script/dart_init.cc b/sky/engine/core/script/dart_init.cc index 7ea3c1e7cb9..c16846d5d3b 100644 --- a/sky/engine/core/script/dart_init.cc +++ b/sky/engine/core/script/dart_init.cc @@ -93,6 +93,10 @@ static const char* kDartCheckedModeArgs[] = { "--error_on_bad_override", }; +static const char* kDartStartPausedArgs[]{ + "--pause_isolates_on_start", +}; + void IsolateShutdownCallback(void* callback_data) { // TODO(dart) } @@ -295,6 +299,9 @@ void InitDartVM() { if (enable_checked_mode) args.append(kDartCheckedModeArgs, arraysize(kDartCheckedModeArgs)); + if (SkySettings::Get().start_paused) + args.append(kDartStartPausedArgs, arraysize(kDartStartPausedArgs)); + CHECK(Dart_SetVMFlags(args.size(), args.data())); { diff --git a/sky/engine/public/platform/sky_settings.h b/sky/engine/public/platform/sky_settings.h index 2431d2a3d50..ea14a42e18f 100644 --- a/sky/engine/public/platform/sky_settings.h +++ b/sky/engine/public/platform/sky_settings.h @@ -9,6 +9,7 @@ namespace blink { struct SkySettings { bool enable_observatory = false; + bool start_paused = false; bool enable_dart_checked_mode = false; static const SkySettings& Get(); diff --git a/sky/shell/platform/android/org/domokit/sky/shell/SkyActivity.java b/sky/shell/platform/android/org/domokit/sky/shell/SkyActivity.java index eb8047bc079..73ad14f58fa 100644 --- a/sky/shell/platform/android/org/domokit/sky/shell/SkyActivity.java +++ b/sky/shell/platform/android/org/domokit/sky/shell/SkyActivity.java @@ -45,6 +45,9 @@ public class SkyActivity extends Activity { if (intent.getBooleanExtra("trace-startup", false)) { args.add("--trace-startup"); } + if (intent.getBooleanExtra("start-paused", false)) { + args.add("--start-paused"); + } if (!args.isEmpty()) { String[] argsArray = new String[args.size()]; return args.toArray(argsArray); diff --git a/sky/shell/shell.cc b/sky/shell/shell.cc index 1ffb669f3c9..492f63c97db 100644 --- a/sky/shell/shell.cc +++ b/sky/shell/shell.cc @@ -83,6 +83,7 @@ void Shell::InitStandalone() { blink::SkySettings settings; settings.enable_observatory = !command_line.HasSwitch(switches::kNonInteractive); + settings.start_paused = command_line.HasSwitch(switches::kStartPaused); settings.enable_dart_checked_mode = command_line.HasSwitch(switches::kEnableCheckedMode); blink::SkySettings::Set(settings); diff --git a/sky/shell/switches.cc b/sky/shell/switches.cc index 53bf6f6c0cc..543eb76669f 100644 --- a/sky/shell/switches.cc +++ b/sky/shell/switches.cc @@ -15,12 +15,14 @@ const char kFLX[] = "flx"; const char kHelp[] = "help"; const char kNonInteractive[] = "non-interactive"; const char kPackageRoot[] = "package-root"; +const char kStartPaused[] = "start-paused"; const char kTraceStartup[] = "trace-startup"; void PrintUsage(const std::string& executable_name) { std::cerr << "Usage: " << executable_name << " --" << kEnableCheckedMode << " --" << kNonInteractive + << " --" << kStartPaused << " --" << kTraceStartup << " --" << kFLX << "=FLX" << " --" << kPackageRoot << "=PACKAGE_ROOT" diff --git a/sky/shell/switches.h b/sky/shell/switches.h index 577c4ab13e5..318443d49a1 100644 --- a/sky/shell/switches.h +++ b/sky/shell/switches.h @@ -16,6 +16,7 @@ extern const char kFLX[]; extern const char kHelp[]; extern const char kNonInteractive[]; extern const char kPackageRoot[]; +extern const char kStartPaused[]; extern const char kTraceStartup[]; void PrintUsage(const std::string& executable_name); diff --git a/sky/shell/tracing_controller.cc b/sky/shell/tracing_controller.cc index 6a940c6fef0..02e9da2029f 100644 --- a/sky/shell/tracing_controller.cc +++ b/sky/shell/tracing_controller.cc @@ -32,7 +32,7 @@ static const char* ObservatoryInvoke(const char* method, intptr_t num_params, void* user_data) { if (user_data == nullptr) { - // During the desctruction on the tracing controller, the user data is + // During the destruction of the tracing controller, the user data is // cleared. Make sure that observatory requests to service calls are not // attempted after tracing controller destruction. return strdup(kObservatoryResultFail); @@ -54,8 +54,7 @@ static const char* ObservatoryInvoke(const char* method, // Flushing the trace log requires an active message loop. However, // observatory callbacks are made on a dart worker thread. We setup a // message loop manually and tell the flush completion handler to - // terminate - // the loop when done + // terminate the loop when done base::MessageLoop worker_thread_loop; base::FilePath temp_dir;