Flutter Engine
 
Loading...
Searching...
No Matches
flutter_view_controller_unittests.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <memory>
6#include <string>
7
10#include "gtest/gtest.h"
11
12namespace flutter {
13
14namespace {
15
16// Stub implementation to validate calls to the API.
17class TestWindowsApi : public testing::StubFlutterWindowsApi {
18 public:
19 // |flutter::testing::StubFlutterWindowsApi|
20 FlutterDesktopViewControllerRef ViewControllerCreate(
21 int width,
22 int height,
24 return reinterpret_cast<FlutterDesktopViewControllerRef>(2);
25 }
26
27 // |flutter::testing::StubFlutterWindowsApi|
28 void ViewControllerDestroy() override { view_controller_destroyed_ = true; }
29
30 // |flutter::testing::StubFlutterWindowsApi|
31 void ViewControllerForceRedraw() override {
32 view_controller_force_redrawed_ = true;
33 }
34
35 // |flutter::testing::StubFlutterWindowsApi|
36 FlutterDesktopEngineRef EngineCreate(
37 const FlutterDesktopEngineProperties& engine_properties) override {
38 return reinterpret_cast<FlutterDesktopEngineRef>(1);
39 }
40
41 // |flutter::testing::StubFlutterWindowsApi|
42 bool EngineDestroy() override {
43 engine_destroyed_ = true;
44 return true;
45 }
46
47 bool engine_destroyed() { return engine_destroyed_; }
48 bool view_controller_destroyed() { return view_controller_destroyed_; }
49 bool view_controller_force_redrawed() {
50 return view_controller_force_redrawed_;
51 }
52
53 private:
54 bool engine_destroyed_ = false;
55 bool view_controller_destroyed_ = false;
56 bool view_controller_force_redrawed_ = false;
57};
58
59} // namespace
60
61TEST(FlutterViewControllerTest, CreateDestroy) {
62 DartProject project(L"data");
63 testing::ScopedStubFlutterWindowsApi scoped_api_stub(
64 std::make_unique<TestWindowsApi>());
65 auto test_api = static_cast<TestWindowsApi*>(scoped_api_stub.stub());
66 {
67 FlutterViewController controller(100, 100, project);
68 }
69 EXPECT_TRUE(test_api->view_controller_destroyed());
70 // Per the C API, once a view controller has taken ownership of an engine
71 // the engine destruction method should not be called.
72 EXPECT_FALSE(test_api->engine_destroyed());
73}
74
76 DartProject project(L"data");
78 std::make_unique<TestWindowsApi>());
79 auto test_api = static_cast<TestWindowsApi*>(scoped_api_stub.stub());
80 FlutterViewController controller(100, 100, project);
81 EXPECT_EQ(controller.view_id(), 1);
82}
83
85 DartProject project(L"data");
87 std::make_unique<TestWindowsApi>());
88 auto test_api = static_cast<TestWindowsApi*>(scoped_api_stub.stub());
89 FlutterViewController controller(100, 100, project);
90 EXPECT_NE(controller.engine(), nullptr);
91}
92
94 DartProject project(L"data");
96 std::make_unique<TestWindowsApi>());
97 auto test_api = static_cast<TestWindowsApi*>(scoped_api_stub.stub());
98 FlutterViewController controller(100, 100, project);
99 EXPECT_NE(controller.view(), nullptr);
100}
101
103 DartProject project(L"data");
105 std::make_unique<TestWindowsApi>());
106 auto test_api = static_cast<TestWindowsApi*>(scoped_api_stub.stub());
107 FlutterViewController controller(100, 100, project);
108
109 controller.ForceRedraw();
110 EXPECT_TRUE(test_api->view_controller_force_redrawed());
111}
112
113} // namespace flutter
FlutterEngine engine
Definition main.cc:84
struct FlutterDesktopViewController * FlutterDesktopViewControllerRef
TEST(FrameTimingsRecorderTest, RecordVsync)
int32_t height
int32_t width