Skip to content

Commit

Permalink
Expose the Flutter engine, Dart and Skia versions to Dart. (flutter#7634
Browse files Browse the repository at this point in the history
)

- Moved versions from shell to common
- versions singleton contains all the required versions.
  • Loading branch information
iskakaushik authored Jan 31, 2019
1 parent 64e1707 commit b94e759
Show file tree
Hide file tree
Showing 17 changed files with 170 additions and 34 deletions.
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));
});
}

0 comments on commit b94e759

Please sign in to comment.