Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Expose the Flutter engine, Dart and Skia versions to Dart. #7634

Merged
merged 13 commits into from
Jan 31, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions ci/licenses_golden/licenses_flutter
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ FILE: ../../../flutter/common/settings.cc
FILE: ../../../flutter/common/settings.h
FILE: ../../../flutter/common/task_runners.cc
FILE: ../../../flutter/common/task_runners.h
FILE: ../../../flutter/common/version/version.cc
FILE: ../../../flutter/common/version/version.h
FILE: ../../../flutter/flow/compositor_context.cc
FILE: ../../../flutter/flow/compositor_context.h
FILE: ../../../flutter/flow/debug_print.cc
Expand Down Expand Up @@ -307,6 +309,9 @@ FILE: ../../../flutter/lib/ui/text/text_box.h
FILE: ../../../flutter/lib/ui/ui.dart
FILE: ../../../flutter/lib/ui/ui_dart_state.cc
FILE: ../../../flutter/lib/ui/ui_dart_state.h
FILE: ../../../flutter/lib/ui/versions.cc
FILE: ../../../flutter/lib/ui/versions.dart
FILE: ../../../flutter/lib/ui/versions.h
FILE: ../../../flutter/lib/ui/window.dart
FILE: ../../../flutter/lib/ui/window/platform_message.cc
FILE: ../../../flutter/lib/ui/window/platform_message.h
Expand Down Expand Up @@ -570,8 +575,6 @@ FILE: ../../../flutter/shell/platform/embedder/embedder_surface_software.h
FILE: ../../../flutter/shell/platform/embedder/fixtures/simple_main.dart
FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.cc
FILE: ../../../flutter/shell/platform/embedder/platform_view_embedder.h
FILE: ../../../flutter/shell/version/version.cc
FILE: ../../../flutter/shell/version/version.h
FILE: ../../../flutter/sky/packages/flutter_services/lib/empty.dart
FILE: ../../../flutter/sky/tools/roll/patches/chromium/android_build.patch
FILE: ../../../flutter/synchronization/pipeline.cc
Expand Down
6 changes: 3 additions & 3 deletions shell/version/BUILD.gn → common/version/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ source_set("version") {
]

defines = [
"SHELL_FLUTTER_ENGINE_VERSION=\"$shell_engine_version\"",
"SHELL_SKIA_VERSION=\"$shell_skia_version\"",
"SHELL_DART_VERSION=\"$shell_dart_version\"",
"FLUTTER_ENGINE_VERSION=\"$engine_version\"",
"SKIA_VERSION=\"$skia_version\"",
"DART_VERSION=\"$dart_version\"",
]

public_configs = [ "$flutter_root:config" ]
Expand Down
12 changes: 6 additions & 6 deletions shell/version/version.cc → common/version/version.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "flutter/shell/version/version.h"
#include "flutter/common/version/version.h"

namespace shell {
namespace blink {

const char* GetFlutterEngineVersion() {
return SHELL_FLUTTER_ENGINE_VERSION;
return FLUTTER_ENGINE_VERSION;
}

const char* GetSkiaVersion() {
return SHELL_SKIA_VERSION;
return SKIA_VERSION;
}

const char* GetDartVersion() {
return SHELL_DART_VERSION;
return DART_VERSION;
}

} // namespace shell
} // namespace blink
24 changes: 12 additions & 12 deletions shell/version/version.gni → common/version/version.gni
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,42 @@
# found in the LICENSE file.

declare_args() {
shell_engine_version = ""
engine_version = ""

shell_skia_version = ""
skia_version = ""

shell_dart_version = ""
dart_version = ""
}

if (shell_engine_version == "") {
shell_engine_version_lines =
if (engine_version == "") {
engine_version_lines =
exec_script("$flutter_root/build/git_revision.py",
[
"--repository",
rebase_path(flutter_root, "", flutter_root),
],
"list lines")
shell_engine_version = shell_engine_version_lines[0]
engine_version = engine_version_lines[0]
}

if (shell_skia_version == "") {
shell_skia_version_lines =
if (skia_version == "") {
skia_version_lines =
exec_script("$flutter_root/build/git_revision.py",
[
"--repository",
rebase_path("//third_party/skia", "", flutter_root),
],
"list lines")
shell_skia_version = shell_skia_version_lines[0]
skia_version = skia_version_lines[0]
}

if (shell_dart_version == "") {
shell_dart_version_lines =
if (dart_version == "") {
dart_version_lines =
exec_script("$flutter_root/build/git_revision.py",
[
"--repository",
rebase_path("//third_party/dart", "", flutter_root),
],
"list lines")
shell_dart_version = shell_dart_version_lines[0]
dart_version = dart_version_lines[0]
}
10 changes: 5 additions & 5 deletions shell/version/version.h → common/version/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef FLUTTER_SHELL_COMMON_VERSION_H_
#define FLUTTER_SHELL_COMMON_VERSION_H_
#ifndef FLUTTER_COMMON_VERSION_VERSION_H_
#define FLUTTER_COMMON_VERSION_VERSION_H_

namespace shell {
namespace blink {

const char* GetFlutterEngineVersion();

const char* GetSkiaVersion();

const char* GetDartVersion();

} // namespace shell
} // namespace blink

#endif // FLUTTER_SHELL_COMMON_VERSION_H_
#endif // FLUTTER_COMMON_VERSION_VERSION_H_
3 changes: 3 additions & 0 deletions lib/ui/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ source_set("ui") {
"text/text_box.h",
"ui_dart_state.cc",
"ui_dart_state.h",
"versions.cc",
"versions.h",
"window/platform_message.cc",
"window/platform_message.h",
"window/platform_message_response.cc",
Expand All @@ -104,6 +106,7 @@ source_set("ui") {
deps = [
"$flutter_root/assets",
"$flutter_root/common",
"$flutter_root/common/version",
"$flutter_root/flow",
"$flutter_root/fml",
"$flutter_root/runtime:test_font",
Expand Down
2 changes: 2 additions & 0 deletions lib/ui/dart_ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "flutter/lib/ui/text/font_collection.h"
#include "flutter/lib/ui/text/paragraph.h"
#include "flutter/lib/ui/text/paragraph_builder.h"
#include "flutter/lib/ui/versions.h"
#include "flutter/lib/ui/window/window.h"
#include "third_party/tonic/converter/dart_converter.h"
#include "third_party/tonic/logging/dart_error.h"
Expand Down Expand Up @@ -87,6 +88,7 @@ void DartUI::InitForGlobal() {
SceneHost::RegisterNatives(g_natives);
SemanticsUpdate::RegisterNatives(g_natives);
SemanticsUpdateBuilder::RegisterNatives(g_natives);
Versions::RegisterNatives(g_natives);
Vertices::RegisterNatives(g_natives);
Window::RegisterNatives(g_natives);

Expand Down
1 change: 1 addition & 0 deletions lib/ui/dart_ui.gni
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ dart_ui_files = [
"$flutter_root/lib/ui/semantics.dart",
"$flutter_root/lib/ui/text.dart",
"$flutter_root/lib/ui/ui.dart",
"$flutter_root/lib/ui/versions.dart",
"$flutter_root/lib/ui/window.dart",
]

Expand Down
1 change: 1 addition & 0 deletions lib/ui/ui.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ part 'plugins.dart';
part 'pointer.dart';
part 'semantics.dart';
part 'text.dart';
part 'versions.dart';
part 'window.dart';
31 changes: 31 additions & 0 deletions lib/ui/versions.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright 2013 The Flutter 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 "flutter/lib/ui/versions.h"
#include "flutter/common/version/version.h"
#include "third_party/tonic/converter/dart_converter.h"
#include "third_party/tonic/dart_library_natives.h"

#include <string>
#include <vector>

using tonic::DartConverter;

namespace blink {

// returns a vector with 3 versions.
// Dart, Skia and Flutter engine versions in this order.
void GetVersions(Dart_NativeArguments args) {
const std::vector<std::string> versions_list = {
GetDartVersion(), GetSkiaVersion(), GetFlutterEngineVersion()};
Dart_Handle dart_val =
DartConverter<std::vector<std::string>>::ToDart(versions_list);
Dart_SetReturnValue(args, dart_val);
}

void Versions::RegisterNatives(tonic::DartLibraryNatives* natives) {
natives->Register({{"Versions_getVersions", GetVersions, 1, true}});
}

} // namespace blink
37 changes: 37 additions & 0 deletions lib/ui/versions.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

part of dart.ui;

/// Wraps version information for Dart, Skia and Flutter.
class Versions {

/// Builds a versions object using the information
/// we get from calling the native getVersions.
factory Versions._internal() {
final List<String> versions = _getVersions();
return Versions._(versions[0], versions[1], versions[2]);
}

/// Private constructor to capture the versions.
Versions._(
this.dartVersion,
this.skiaVersion,
this.flutterEngineVersion
) : assert(dartVersion != null),
assert(skiaVersion != null),
assert(flutterEngineVersion != null);

/// returns a vector with 3 versions.
/// Dart, Skia and Flutter engine versions in this order.
static List<String> _getVersions() native 'Versions_getVersions';

final String dartVersion;
final String skiaVersion;
final String flutterEngineVersion;
}

/// [Versions] singleton. This object exposes Dart, Skia and
/// Flutter engine versions.
final Versions versions = Versions._internal();
21 changes: 21 additions & 0 deletions lib/ui/versions.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef FLUTTER_LIB_UI_VERSIONS_H_
#define FLUTTER_LIB_UI_VERSIONS_H_

namespace tonic {
class DartLibraryNatives;
} // namespace tonic

namespace blink {

class Versions final {
public:
static void RegisterNatives(tonic::DartLibraryNatives* natives);
};

} // namespace blink

#endif // FLUTTER_LIB_UI_VERSIONS_H_
2 changes: 1 addition & 1 deletion shell/common/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ source_set("common") {
]

public_deps = [
"$flutter_root/shell/version",
"$flutter_root/common/version",
"$flutter_root/third_party/txt",
"//third_party/rapidjson",
"//third_party/tonic",
Expand Down
1 change: 1 addition & 0 deletions shell/common/engine.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <vector>

#include "flutter/common/settings.h"
#include "flutter/common/version/version.h"
#include "flutter/fml/eintr_wrapper.h"
#include "flutter/fml/file.h"
#include "flutter/fml/make_copyable.h"
Expand Down
2 changes: 1 addition & 1 deletion shell/common/persistent_cache.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
#include <memory>
#include <string>

#include "flutter/common/version/version.h"
#include "flutter/fml/base32.h"
#include "flutter/fml/file.h"
#include "flutter/fml/make_copyable.h"
#include "flutter/fml/mapping.h"
#include "flutter/fml/paths.h"
#include "flutter/fml/trace_event.h"
#include "flutter/shell/version/version.h"

namespace shell {

Expand Down
9 changes: 5 additions & 4 deletions shell/common/switches.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
#include <sstream>
#include <string>

#include "flutter/common/version/version.h"
#include "flutter/fml/native_library.h"
#include "flutter/fml/paths.h"
#include "flutter/fml/string_view.h"
#include "flutter/shell/version/version.h"

// Include once for the default enum definition.
#include "flutter/shell/common/switches.h"
Expand Down Expand Up @@ -46,11 +46,12 @@ void PrintUsage(const std::string& executable_name) {

std::cerr << "Versions: " << std::endl << std::endl;

std::cerr << "Flutter Engine Version: " << GetFlutterEngineVersion()
std::cerr << "Flutter Engine Version: " << blink::GetFlutterEngineVersion()
<< std::endl;
std::cerr << "Skia Version: " << GetSkiaVersion() << std::endl;
std::cerr << "Skia Version: " << blink::GetSkiaVersion() << std::endl;

std::cerr << "Dart Version: " << GetDartVersion() << std::endl << std::endl;
std::cerr << "Dart Version: " << blink::GetDartVersion() << std::endl
<< std::endl;

std::cerr << "Available Flags:" << std::endl;

Expand Down
35 changes: 35 additions & 0 deletions testing/dart/versions_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// HACK: pretend to be dart.ui in order to access its internals
library dart.ui;

import 'package:test/test.dart';

part '../../lib/ui/versions.dart';

bool _isNotEmpty(String s) {
if (s == null || s.isEmpty) {
return false;
} else {
return true;
}
}

void main() {
test('dartVersion should not be empty', () {
final String dartVersion = versions.dartVersion;
expect(_isNotEmpty(dartVersion), equals(true));
});

test('skiaVersion should not be empty', () {
final String skiaVersion = versions.skiaVersion;
expect(_isNotEmpty(skiaVersion), equals(true));
});

test('flutterEngineVersion should not be empty', () {
final String flutterEngineVersion = versions.flutterEngineVersion;
expect(_isNotEmpty(flutterEngineVersion), equals(true));
});
}