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

Commit 7424400

Browse files
authored
Moved PlatformMessage's to unique_ptrs (#25860)
1 parent 1c22286 commit 7424400

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+179
-169
lines changed

lib/ui/window/platform_configuration.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,12 @@ Dart_Handle SendPlatformMessage(Dart_Handle window,
124124
}
125125
if (Dart_IsNull(data_handle)) {
126126
dart_state->platform_configuration()->client()->HandlePlatformMessage(
127-
fml::MakeRefCounted<PlatformMessage>(name, response));
127+
std::make_unique<PlatformMessage>(name, response));
128128
} else {
129129
tonic::DartByteData data(data_handle);
130130
const uint8_t* buffer = static_cast<const uint8_t*>(data.data());
131131
dart_state->platform_configuration()->client()->HandlePlatformMessage(
132-
fml::MakeRefCounted<PlatformMessage>(
132+
std::make_unique<PlatformMessage>(
133133
name, std::vector<uint8_t>(buffer, buffer + data.length_in_bytes()),
134134
response));
135135
}
@@ -305,7 +305,7 @@ void PlatformConfiguration::UpdateAccessibilityFeatures(int32_t values) {
305305
}
306306

307307
void PlatformConfiguration::DispatchPlatformMessage(
308-
fml::RefPtr<PlatformMessage> message) {
308+
std::unique_ptr<PlatformMessage> message) {
309309
std::shared_ptr<tonic::DartState> dart_state =
310310
dispatch_platform_message_.dart_state().lock();
311311
if (!dart_state) {

lib/ui/window/platform_configuration.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ class PlatformConfigurationClient {
8787
/// @param[in] message The message from the Flutter application to send to
8888
/// the underlying platform.
8989
///
90-
virtual void HandlePlatformMessage(fml::RefPtr<PlatformMessage> message) = 0;
90+
virtual void HandlePlatformMessage(
91+
std::unique_ptr<PlatformMessage> message) = 0;
9192

9293
//--------------------------------------------------------------------------
9394
/// @brief Returns the current collection of fonts available on the
@@ -309,7 +310,7 @@ class PlatformConfiguration final {
309310
/// @param[in] message The message sent from the embedder to the Dart
310311
/// application.
311312
///
312-
void DispatchPlatformMessage(fml::RefPtr<PlatformMessage> message);
313+
void DispatchPlatformMessage(std::unique_ptr<PlatformMessage> message);
313314

314315
//----------------------------------------------------------------------------
315316
/// @brief Notifies the framework that the embedder encountered an

lib/ui/window/platform_configuration_unittests.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ class DummyPlatformConfigurationClient : public PlatformConfigurationClient {
2929
void ScheduleFrame() override {}
3030
void Render(Scene* scene) override {}
3131
void UpdateSemantics(SemanticsUpdate* update) override {}
32-
void HandlePlatformMessage(fml::RefPtr<PlatformMessage> message) override {}
32+
void HandlePlatformMessage(
33+
std::unique_ptr<PlatformMessage> message) override {}
3334
FontCollection& GetFontCollection() override { return font_collection_; }
3435
void UpdateIsolateDescription(const std::string isolate_name,
3536
int64_t isolate_port) override {}

lib/ui/window/platform_message.h

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@
1414

1515
namespace flutter {
1616

17-
class PlatformMessage : public fml::RefCountedThreadSafe<PlatformMessage> {
18-
FML_FRIEND_REF_COUNTED_THREAD_SAFE(PlatformMessage);
19-
FML_FRIEND_MAKE_REF_COUNTED(PlatformMessage);
20-
17+
class PlatformMessage {
2118
public:
19+
PlatformMessage(std::string channel,
20+
std::vector<uint8_t> data,
21+
fml::RefPtr<PlatformMessageResponse> response);
22+
PlatformMessage(std::string channel,
23+
fml::RefPtr<PlatformMessageResponse> response);
24+
~PlatformMessage();
25+
2226
const std::string& channel() const { return channel_; }
2327
const std::vector<uint8_t>& data() const { return data_; }
2428
bool hasData() { return hasData_; }
@@ -28,13 +32,6 @@ class PlatformMessage : public fml::RefCountedThreadSafe<PlatformMessage> {
2832
}
2933

3034
private:
31-
PlatformMessage(std::string channel,
32-
std::vector<uint8_t> data,
33-
fml::RefPtr<PlatformMessageResponse> response);
34-
PlatformMessage(std::string channel,
35-
fml::RefPtr<PlatformMessageResponse> response);
36-
~PlatformMessage();
37-
3835
std::string channel_;
3936
std::vector<uint8_t> data_;
4037
bool hasData_;

runtime/runtime_controller.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ bool RuntimeController::NotifyIdle(int64_t deadline, size_t freed_hint) {
239239
}
240240

241241
bool RuntimeController::DispatchPlatformMessage(
242-
fml::RefPtr<PlatformMessage> message) {
242+
std::unique_ptr<PlatformMessage> message) {
243243
if (auto* platform_configuration = GetPlatformConfigurationIfAvailable()) {
244244
TRACE_EVENT1("flutter", "RuntimeController::DispatchPlatformMessage",
245245
"mode", "basic");
@@ -320,7 +320,7 @@ void RuntimeController::UpdateSemantics(SemanticsUpdate* update) {
320320

321321
// |PlatformConfigurationClient|
322322
void RuntimeController::HandlePlatformMessage(
323-
fml::RefPtr<PlatformMessage> message) {
323+
std::unique_ptr<PlatformMessage> message) {
324324
client_.HandlePlatformMessage(std::move(message));
325325
}
326326

runtime/runtime_controller.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,8 @@ class RuntimeController : public PlatformConfigurationClient {
411411
/// @return If the message was dispatched to the running root isolate.
412412
/// This may fail is an isolate is not running.
413413
///
414-
virtual bool DispatchPlatformMessage(fml::RefPtr<PlatformMessage> message);
414+
virtual bool DispatchPlatformMessage(
415+
std::unique_ptr<PlatformMessage> message);
415416

416417
//----------------------------------------------------------------------------
417418
/// @brief Dispatch the specified pointer data message to the running
@@ -655,7 +656,7 @@ class RuntimeController : public PlatformConfigurationClient {
655656
void UpdateSemantics(SemanticsUpdate* update) override;
656657

657658
// |PlatformConfigurationClient|
658-
void HandlePlatformMessage(fml::RefPtr<PlatformMessage> message) override;
659+
void HandlePlatformMessage(std::unique_ptr<PlatformMessage> message) override;
659660

660661
// |PlatformConfigurationClient|
661662
FontCollection& GetFontCollection() override;

runtime/runtime_delegate.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ class RuntimeDelegate {
2828
virtual void UpdateSemantics(SemanticsNodeUpdates update,
2929
CustomAccessibilityActionUpdates actions) = 0;
3030

31-
virtual void HandlePlatformMessage(fml::RefPtr<PlatformMessage> message) = 0;
31+
virtual void HandlePlatformMessage(
32+
std::unique_ptr<PlatformMessage> message) = 0;
3233

3334
virtual FontCollection& GetFontCollection() = 0;
3435

shell/common/engine.cc

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,13 @@ Engine::RunStatus Engine::Run(RunConfiguration configuration) {
203203

204204
auto service_id = runtime_controller_->GetRootIsolateServiceID();
205205
if (service_id.has_value()) {
206-
fml::RefPtr<PlatformMessage> service_id_message =
207-
fml::MakeRefCounted<flutter::PlatformMessage>(
206+
std::unique_ptr<PlatformMessage> service_id_message =
207+
std::make_unique<flutter::PlatformMessage>(
208208
kIsolateChannel,
209209
std::vector<uint8_t>(service_id.value().begin(),
210210
service_id.value().end()),
211211
nullptr);
212-
HandlePlatformMessage(service_id_message);
212+
HandlePlatformMessage(std::move(service_id_message));
213213
}
214214

215215
return Engine::RunStatus::Success;
@@ -296,7 +296,7 @@ void Engine::SetViewportMetrics(const ViewportMetrics& metrics) {
296296
}
297297
}
298298

299-
void Engine::DispatchPlatformMessage(fml::RefPtr<PlatformMessage> message) {
299+
void Engine::DispatchPlatformMessage(std::unique_ptr<PlatformMessage> message) {
300300
std::string channel = message->channel();
301301
if (channel == kLifecycleChannel) {
302302
if (HandleLifecyclePlatformMessage(message.get())) {
@@ -349,7 +349,7 @@ bool Engine::HandleLifecyclePlatformMessage(PlatformMessage* message) {
349349
}
350350

351351
bool Engine::HandleNavigationPlatformMessage(
352-
fml::RefPtr<PlatformMessage> message) {
352+
std::unique_ptr<PlatformMessage> message) {
353353
const auto& data = message->data();
354354

355355
rapidjson::Document document;
@@ -488,7 +488,7 @@ void Engine::UpdateSemantics(SemanticsNodeUpdates update,
488488
delegate_.OnEngineUpdateSemantics(std::move(update), std::move(actions));
489489
}
490490

491-
void Engine::HandlePlatformMessage(fml::RefPtr<PlatformMessage> message) {
491+
void Engine::HandlePlatformMessage(std::unique_ptr<PlatformMessage> message) {
492492
if (message->channel() == kAssetChannel) {
493493
HandleAssetPlatformMessage(std::move(message));
494494
} else {
@@ -531,7 +531,8 @@ void Engine::ScheduleSecondaryVsyncCallback(uintptr_t id,
531531
animator_->ScheduleSecondaryVsyncCallback(id, callback);
532532
}
533533

534-
void Engine::HandleAssetPlatformMessage(fml::RefPtr<PlatformMessage> message) {
534+
void Engine::HandleAssetPlatformMessage(
535+
std::unique_ptr<PlatformMessage> message) {
535536
fml::RefPtr<PlatformMessageResponse> response = message->response();
536537
if (!response) {
537538
return;

shell/common/engine.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ class Engine final : public RuntimeDelegate,
178178
/// the underlying platform.
179179
///
180180
virtual void OnEngineHandlePlatformMessage(
181-
fml::RefPtr<PlatformMessage> message) = 0;
181+
std::unique_ptr<PlatformMessage> message) = 0;
182182

183183
//--------------------------------------------------------------------------
184184
/// @brief Notifies the delegate that the root isolate of the
@@ -712,7 +712,7 @@ class Engine final : public RuntimeDelegate,
712712
/// @param[in] message The message sent from the embedder to the Dart
713713
/// application.
714714
///
715-
void DispatchPlatformMessage(fml::RefPtr<PlatformMessage> message);
715+
void DispatchPlatformMessage(std::unique_ptr<PlatformMessage> message);
716716

717717
//----------------------------------------------------------------------------
718718
/// @brief Notifies the engine that the embedder has sent it a pointer
@@ -937,7 +937,7 @@ class Engine final : public RuntimeDelegate,
937937
CustomAccessibilityActionUpdates actions) override;
938938

939939
// |RuntimeDelegate|
940-
void HandlePlatformMessage(fml::RefPtr<PlatformMessage> message) override;
940+
void HandlePlatformMessage(std::unique_ptr<PlatformMessage> message) override;
941941

942942
// |RuntimeDelegate|
943943
void OnRootIsolateCreated() override;
@@ -961,13 +961,14 @@ class Engine final : public RuntimeDelegate,
961961

962962
bool HandleLifecyclePlatformMessage(PlatformMessage* message);
963963

964-
bool HandleNavigationPlatformMessage(fml::RefPtr<PlatformMessage> message);
964+
bool HandleNavigationPlatformMessage(
965+
std::unique_ptr<PlatformMessage> message);
965966

966967
bool HandleLocalizationPlatformMessage(PlatformMessage* message);
967968

968969
void HandleSettingsPlatformMessage(PlatformMessage* message);
969970

970-
void HandleAssetPlatformMessage(fml::RefPtr<PlatformMessage> message);
971+
void HandleAssetPlatformMessage(std::unique_ptr<PlatformMessage> message);
971972

972973
bool GetAssetAsBuffer(const std::string& name, std::vector<uint8_t>* data);
973974

shell/common/engine_unittests.cc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class MockDelegate : public Engine::Delegate {
2626
MOCK_METHOD2(OnEngineUpdateSemantics,
2727
void(SemanticsNodeUpdates, CustomAccessibilityActionUpdates));
2828
MOCK_METHOD1(OnEngineHandlePlatformMessage,
29-
void(fml::RefPtr<PlatformMessage>));
29+
void(std::unique_ptr<PlatformMessage>));
3030
MOCK_METHOD0(OnPreEngineRestart, void());
3131
MOCK_METHOD0(OnRootIsolateCreated, void());
3232
MOCK_METHOD2(UpdateIsolateDescription, void(const std::string, int64_t));
@@ -51,7 +51,7 @@ class MockRuntimeDelegate : public RuntimeDelegate {
5151
MOCK_METHOD1(Render, void(std::unique_ptr<flutter::LayerTree>));
5252
MOCK_METHOD2(UpdateSemantics,
5353
void(SemanticsNodeUpdates, CustomAccessibilityActionUpdates));
54-
MOCK_METHOD1(HandlePlatformMessage, void(fml::RefPtr<PlatformMessage>));
54+
MOCK_METHOD1(HandlePlatformMessage, void(std::unique_ptr<PlatformMessage>));
5555
MOCK_METHOD0(GetFontCollection, FontCollection&());
5656
MOCK_METHOD0(OnRootIsolateCreated, void());
5757
MOCK_METHOD2(UpdateIsolateDescription, void(const std::string, int64_t));
@@ -67,14 +67,14 @@ class MockRuntimeController : public RuntimeController {
6767
MockRuntimeController(RuntimeDelegate& client, TaskRunners p_task_runners)
6868
: RuntimeController(client, p_task_runners) {}
6969
MOCK_METHOD0(IsRootIsolateRunning, bool());
70-
MOCK_METHOD1(DispatchPlatformMessage, bool(fml::RefPtr<PlatformMessage>));
70+
MOCK_METHOD1(DispatchPlatformMessage, bool(std::unique_ptr<PlatformMessage>));
7171
MOCK_METHOD3(LoadDartDeferredLibraryError,
7272
void(intptr_t, const std::string, bool));
7373
MOCK_CONST_METHOD0(GetDartVM, DartVM*());
7474
MOCK_METHOD2(NotifyIdle, bool(int64_t, size_t));
7575
};
7676

77-
fml::RefPtr<PlatformMessage> MakePlatformMessage(
77+
std::unique_ptr<PlatformMessage> MakePlatformMessage(
7878
const std::string& channel,
7979
const std::map<std::string, std::string>& values,
8080
fml::RefPtr<PlatformMessageResponse> response) {
@@ -95,7 +95,7 @@ fml::RefPtr<PlatformMessage> MakePlatformMessage(
9595
document.Accept(writer);
9696
const uint8_t* data = reinterpret_cast<const uint8_t*>(buffer.GetString());
9797

98-
fml::RefPtr<PlatformMessage> message = fml::MakeRefCounted<PlatformMessage>(
98+
std::unique_ptr<PlatformMessage> message = std::make_unique<PlatformMessage>(
9999
channel, std::vector<uint8_t>(data, data + buffer.GetSize()), response);
100100
return message;
101101
}
@@ -179,9 +179,9 @@ TEST_F(EngineTest, DispatchPlatformMessageUnknown) {
179179

180180
fml::RefPtr<PlatformMessageResponse> response =
181181
fml::MakeRefCounted<MockResponse>();
182-
fml::RefPtr<PlatformMessage> message =
183-
fml::MakeRefCounted<PlatformMessage>("foo", response);
184-
engine->DispatchPlatformMessage(message);
182+
std::unique_ptr<PlatformMessage> message =
183+
std::make_unique<PlatformMessage>("foo", response);
184+
engine->DispatchPlatformMessage(std::move(message));
185185
});
186186
}
187187

@@ -209,9 +209,9 @@ TEST_F(EngineTest, DispatchPlatformMessageInitialRoute) {
209209
{"method", "setInitialRoute"},
210210
{"args", "test_initial_route"},
211211
};
212-
fml::RefPtr<PlatformMessage> message =
212+
std::unique_ptr<PlatformMessage> message =
213213
MakePlatformMessage("flutter/navigation", values, response);
214-
engine->DispatchPlatformMessage(message);
214+
engine->DispatchPlatformMessage(std::move(message));
215215
EXPECT_EQ(engine->InitialRoute(), "test_initial_route");
216216
});
217217
}
@@ -242,9 +242,9 @@ TEST_F(EngineTest, DispatchPlatformMessageInitialRouteIgnored) {
242242
{"method", "setInitialRoute"},
243243
{"args", "test_initial_route"},
244244
};
245-
fml::RefPtr<PlatformMessage> message =
245+
std::unique_ptr<PlatformMessage> message =
246246
MakePlatformMessage("flutter/navigation", values, response);
247-
engine->DispatchPlatformMessage(message);
247+
engine->DispatchPlatformMessage(std::move(message));
248248
EXPECT_EQ(engine->InitialRoute(), "");
249249
});
250250
}

0 commit comments

Comments
 (0)