Skip to content

Commit

Permalink
[fuchsia] Migrate to base/fuchsia/mem_buffer_util.
Browse files Browse the repository at this point in the history
Also switch callsites to using absl::optional rather than bool for
operations that may fail (following https://crrev.com/924662).

This is part two of a multi-stage move to eventually allow for the
removal of dependencies on //fuchsia from other parts of Chrome.

Bug: 1120731
Bug: 1156780
Change-Id: I541e2af413f57097a3f71913cdfe36002694dc6c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3172844
Auto-Submit: Greg Thompson <grt@chromium.org>
Reviewed-by: Kevin Marshall <kmarshall@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: David Dorwin <ddorwin@chromium.org>
Commit-Queue: Greg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/main@{#928247}
  • Loading branch information
GregTho authored and Chromium LUCI CQ committed Oct 5, 2021
1 parent 7a91289 commit af91533
Show file tree
Hide file tree
Showing 32 changed files with 590 additions and 155 deletions.
1 change: 0 additions & 1 deletion chromecast/bindings/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ if (is_fuchsia) {
"//base",
"//components/cast/message_port",
"//fuchsia:cast_fidl",
"//fuchsia/base",
"//fuchsia/base:message_port",
]
}
Expand Down
7 changes: 4 additions & 3 deletions chromecast/bindings/bindings_manager_fuchsia.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@

#include "chromecast/bindings/bindings_manager_fuchsia.h"

#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "base/check.h"
#include "base/fuchsia/fuchsia_logging.h"
#include "base/fuchsia/mem_buffer_util.h"
#include "base/strings/string_piece.h"
#include "components/cast/message_port/fuchsia/message_port_fuchsia.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/message_port.h"

namespace chromecast {
Expand All @@ -24,7 +25,7 @@ BindingsManagerFuchsia::~BindingsManagerFuchsia() = default;
void BindingsManagerFuchsia::AddBinding(base::StringPiece binding_name,
base::StringPiece binding_script) {
bindings_[std::string(binding_name)] =
cr_fuchsia::MemBufferFromString(binding_script, "cast-binding-script");
base::MemBufferFromString(binding_script, "cast-binding-script");
}

void BindingsManagerFuchsia::GetAll(GetAllCallback callback) {
Expand Down
10 changes: 3 additions & 7 deletions components/cast/message_port/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,12 @@ if (is_fuchsia) {

public_deps = [
":public",

# TODO(crbug.com/1120731): Remove dependencies on //fuchsia.
"//fuchsia/base",
"//base",
"//third_party/abseil-cpp:absl",
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web",
]

deps = [
"//base",
"//third_party/fuchsia-sdk/sdk/pkg/fit-promise",
]
deps = [ "//third_party/fuchsia-sdk/sdk/pkg/fit-promise" ]
}
}

Expand Down
2 changes: 0 additions & 2 deletions components/cast/message_port/DEPS
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
include_rules = [
# TODO(crbug.com/1120731): Remove dependencies on //fuchsia.
"+fuchsia/base/mem_buffer_util.h",
"+third_party/blink/public/common/messaging",
]
10 changes: 5 additions & 5 deletions components/cast/message_port/fuchsia/message_port_fuchsia.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
#include <lib/fpromise/result.h>

#include "base/fuchsia/fuchsia_logging.h"
#include "base/fuchsia/mem_buffer_util.h"
#include "base/memory/weak_ptr.h"
#include "base/notreached.h"
#include "base/strings/string_piece.h"
#include "fuchsia/base/mem_buffer_util.h"

namespace cast_api_bindings {
namespace {
Expand Down Expand Up @@ -242,7 +242,7 @@ fuchsia::web::WebMessage MessagePortFuchsia::CreateWebMessage(
base::StringPiece message,
std::vector<std::unique_ptr<MessagePort>> ports) {
fuchsia::web::WebMessage message_fidl;
message_fidl.set_data(cr_fuchsia::MemBufferFromString(message, message));
message_fidl.set_data(base::MemBufferFromString(message, message));
if (!ports.empty()) {
PortType expected_port_type = FromMessagePort(ports[0].get())->port_type_;
std::vector<fuchsia::web::IncomingTransferable> incoming_transferables;
Expand Down Expand Up @@ -297,8 +297,8 @@ MessagePortFuchsia::ExtractAndHandleMessageFromFidl(
return fuchsia::web::FrameError::NO_DATA_IN_MESSAGE;
}

std::string data;
if (!cr_fuchsia::StringFromMemBuffer(message.data(), &data)) {
absl::optional<std::string> data = base::StringFromMemBuffer(message.data());
if (!data) {
return fuchsia::web::FrameError::BUFFER_NOT_UTF8;
}

Expand All @@ -317,7 +317,7 @@ MessagePortFuchsia::ExtractAndHandleMessageFromFidl(
}
}

if (!receiver_->OnMessage(std::move(data), std::move(ports))) {
if (!receiver_->OnMessage(std::move(*data), std::move(ports))) {
return fuchsia::web::FrameError::INTERNAL_ERROR;
}

Expand Down
18 changes: 15 additions & 3 deletions fuchsia/base/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import("//testing/test.gni")

# Integration helpers for commonly used fuchsia.* APIs.
source_set("base") {
visibility = [ "//fuchsia/*" ]
sources = [
"config_reader.cc",
"feedback_registration.cc",
Expand Down Expand Up @@ -41,6 +42,7 @@ source_set("base") {

# Integration helpers for fuchsia.modular.
source_set("modular") {
visibility = [ "//fuchsia/*" ]
sources = [
"agent_impl.cc",
"agent_impl.h",
Expand All @@ -58,20 +60,30 @@ source_set("modular") {

# FIDL/Mojo adapters for MessagePorts.
source_set("message_port") {
visibility = [
"//chromecast/bindings:bindings_manager_fuchsia",
"//fuchsia/*",
]
sources = [ "message_port.cc" ]
public = [ "message_port.h" ]
public_deps = [
"//third_party/abseil-cpp:absl",
"//third_party/blink/public/common:headers",
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web",
]
deps = [
":base",
"//base",
"//mojo/public/cpp/bindings",
"//third_party/blink/public/common",
"//third_party/blink/public/common:headers",
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web",
"//third_party/fuchsia-sdk/sdk/pkg/fit-promise",
]
}

source_set("legacymetrics") {
visibility = [
":*",
"//fuchsia/engine/*",
]
sources = [
"legacymetrics_client.cc",
"legacymetrics_client.h",
Expand Down
7 changes: 4 additions & 3 deletions fuchsia/base/inspect_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
#include <lib/inspect/service/cpp/reader.h>
#include <lib/sys/cpp/component_context.h>
#include <lib/sys/inspect/cpp/component.h>

#include <cstdint>
#include <memory>

#include "base/fuchsia/mem_buffer_util.h"
#include "base/task/single_thread_task_executor.h"
#include "base/test/task_environment.h"
#include "components/version_info/version_info.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/string_util.h"
#include "testing/gtest/include/gtest/gtest.h"

Expand Down Expand Up @@ -78,8 +79,8 @@ TEST_F(InspectTest, PublishVersionInfoToInspect) {

// Parse the data as an inspect::Hierarchy.
ASSERT_TRUE(content.has_buffer());
std::string buffer_data;
cr_fuchsia::StringFromMemBuffer(content.buffer(), &buffer_data);
std::string buffer_data =
base::StringFromMemBuffer(content.buffer()).value_or(std::string());
inspect::Hierarchy hierarchy =
inspect::ReadFromBuffer(cr_fuchsia::StringToBytes(buffer_data))
.take_value();
Expand Down
12 changes: 7 additions & 5 deletions fuchsia/base/message_port.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@
#include "base/check.h"
#include "base/containers/circular_deque.h"
#include "base/fuchsia/fuchsia_logging.h"
#include "base/fuchsia/mem_buffer_util.h"
#include "base/macros.h"
#include "base/stl_util.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "base/strings/utf_string_conversions.h"

namespace cr_fuchsia {
namespace {
Expand All @@ -37,11 +38,12 @@ absl::optional<fuchsia::web::FrameError> BlinkMessageFromFidl(
return fuchsia::web::FrameError::NO_DATA_IN_MESSAGE;
}

std::u16string data_utf16;
if (!cr_fuchsia::ReadUTF8FromVMOAsUTF16(fidl_message.data(), &data_utf16)) {
absl::optional<std::u16string> data_utf16 =
base::ReadUTF8FromVMOAsUTF16(fidl_message.data());
if (!data_utf16) {
return fuchsia::web::FrameError::BUFFER_NOT_UTF8;
}
blink_message->data = data_utf16;
blink_message->data = std::move(*data_utf16);

if (fidl_message.has_outgoing_transfer() &&
fidl_message.has_incoming_transfer()) {
Expand Down Expand Up @@ -368,7 +370,7 @@ absl::optional<fuchsia::web::WebMessage> FidlWebMessageFromBlink(

constexpr char kBufferVmoName[] = "cr-web-message-from-blink";
fuchsia::mem::Buffer data_buffer =
cr_fuchsia::MemBufferFromString(data_utf8, kBufferVmoName);
base::MemBufferFromString(data_utf8, kBufferVmoName);
if (!data_buffer.vmo)
return absl::nullopt;

Expand Down
11 changes: 6 additions & 5 deletions fuchsia/base/test/frame_test_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

#include "fuchsia/base/test/frame_test_util.h"

#include "base/fuchsia/mem_buffer_util.h"
#include "base/json/json_reader.h"
#include "base/run_loop.h"
#include "base/strings/string_piece.h"
#include "base/test/test_future.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/test/fit_adapter.h"
#include "fuchsia/base/test/test_navigation_listener.h"

Expand Down Expand Up @@ -37,18 +37,19 @@ bool LoadUrlAndExpectResponse(
absl::optional<base::Value> ExecuteJavaScript(fuchsia::web::Frame* frame,
base::StringPiece script) {
base::test::TestFuture<fuchsia::web::Frame_ExecuteJavaScript_Result> result;
frame->ExecuteJavaScript({"*"}, MemBufferFromString(script, "test"),
frame->ExecuteJavaScript({"*"}, base::MemBufferFromString(script, "test"),
CallbackToFitFunction(result.GetCallback()));

if (!result.Wait() || !result.Get().is_response())
return {};

std::string result_json;
if (!StringFromMemBuffer(result.Get().response().result, &result_json)) {
absl::optional<std::string> result_json =
base::StringFromMemBuffer(result.Get().response().result);
if (!result_json) {
return {};
}

return base::JSONReader::Read(result_json);
return base::JSONReader::Read(*result_json);
}

fuchsia::web::LoadUrlParams CreateLoadUrlParamsWithUserActivation() {
Expand Down
1 change: 0 additions & 1 deletion fuchsia/base/test/test_navigation_listener.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#include "base/run_loop.h"
#include "base/strings/string_piece.h"
#include "base/strings/stringprintf.h"
#include "fuchsia/base/mem_buffer_util.h"

namespace cr_fuchsia {

Expand Down
6 changes: 3 additions & 3 deletions fuchsia/engine/browser/accessibility_bridge_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
#include <lib/ui/scenic/cpp/view_ref_pair.h>
#include <zircon/types.h>

#include "base/fuchsia/mem_buffer_util.h"
#include "base/strings/stringprintf.h"
#include "base/test/bind.h"
#include "content/public/test/browser_test.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/test/frame_test_util.h"
#include "fuchsia/base/test/test_navigation_listener.h"
#include "fuchsia/engine/browser/accessibility_bridge.h"
Expand Down Expand Up @@ -1060,7 +1060,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityBridgeTest, OutOfProcessIframe) {
// src to be |out_of_process_url|.
frame_->AddBeforeLoadJavaScript(
kBindingsId, {"*"},
cr_fuchsia::MemBufferFromString(
base::MemBufferFromString(
base::StringPrintf("iframeSrc = '%s'",
out_of_process_url.spec().c_str()),
"test"),
Expand Down Expand Up @@ -1097,7 +1097,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityBridgeTest, OutOfProcessIframe) {
out_of_process_url_2.spec().c_str());

frame_->ExecuteJavaScript(
{"*"}, cr_fuchsia::MemBufferFromString(script, "test2"),
{"*"}, base::MemBufferFromString(script, "test2"),
[](fuchsia::web::Frame_ExecuteJavaScript_Result result) {
CHECK(result.is_response());
});
Expand Down
6 changes: 3 additions & 3 deletions fuchsia/engine/browser/cast_streaming_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
// found in the LICENSE file.

#include "base/callback_helpers.h"
#include "base/fuchsia/mem_buffer_util.h"
#include "base/test/test_future.h"
#include "base/threading/platform_thread.h"
#include "components/cast/message_port/fuchsia/message_port_fuchsia.h"
#include "components/cast/message_port/platform_message_port.h"
#include "components/cast_streaming/browser/test/cast_streaming_test_sender.h"
#include "content/public/test/browser_test.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/test/fit_adapter.h"
#include "fuchsia/base/test/frame_test_util.h"
#include "fuchsia/base/test/test_navigation_listener.h"
Expand Down Expand Up @@ -113,7 +113,7 @@ IN_PROC_BROWSER_TEST_F(CastStreamingTest, LoadSuccess) {
const GURL page_url(
embedded_test_server()->GetURL(kCastStreamingReceiverPath));
fuchsia::mem::Buffer ignored_message_string =
cr_fuchsia::MemBufferFromString("hi", "test");
base::MemBufferFromString("hi", "test");

std::unique_ptr<cast_api_bindings::MessagePort> sender_message_port;
std::unique_ptr<cast_api_bindings::MessagePort> receiver_message_port;
Expand Down Expand Up @@ -158,7 +158,7 @@ IN_PROC_BROWSER_TEST_F(CastStreamingTest, VideoOnlyReceiver) {
const GURL kPageUrl(
embedded_test_server()->GetURL(kCastStreamingReceiverPath));
fuchsia::mem::Buffer ignored_message_string =
cr_fuchsia::MemBufferFromString("hi", "test");
base::MemBufferFromString("hi", "test");

std::unique_ptr<cast_api_bindings::MessagePort> sender_message_port;
std::unique_ptr<cast_api_bindings::MessagePort> receiver_message_port;
Expand Down
9 changes: 4 additions & 5 deletions fuchsia/engine/browser/context_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
#include "base/bind.h"
#include "base/fuchsia/fuchsia_logging.h"
#include "base/fuchsia/koid.h"
#include "base/fuchsia/mem_buffer_util.h"
#include "base/strings/stringprintf.h"
#include "components/cast_streaming/browser/public/network_context_getter.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/engine/browser/frame_impl.h"
#include "fuchsia/engine/browser/web_engine_devtools_controller.h"
#include "third_party/blink/public/common/web_preferences/web_preferences.h"
Expand Down Expand Up @@ -131,10 +131,9 @@ void ContextImpl::CreateFrameForWebContents(
// present, it will be provided to the FrameImpl after it is created below.
absl::optional<std::string> explicit_sites_filter_error_page;
if (params.has_explicit_sites_filter_error_page()) {
explicit_sites_filter_error_page.emplace();
if (!cr_fuchsia::StringFromMemData(
params.explicit_sites_filter_error_page(),
&explicit_sites_filter_error_page.value())) {
explicit_sites_filter_error_page =
base::StringFromMemData(params.explicit_sites_filter_error_page());
if (!explicit_sites_filter_error_page) {
frame_request.Close(ZX_ERR_INVALID_ARGS);
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include "components/safe_search_api/stub_url_checker.h"
#include "components/safe_search_api/url_checker.h"
#include "content/public/test/browser_test.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/test/frame_test_util.h"
#include "fuchsia/base/test/test_navigation_listener.h"
#include "fuchsia/engine/browser/context_impl.h"
Expand Down
10 changes: 5 additions & 5 deletions fuchsia/engine/browser/favicon_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/fuchsia/mem_buffer_util.h"
#include "content/public/test/browser_test.h"
#include "fuchsia/base/mem_buffer_util.h"
#include "fuchsia/base/test/frame_test_util.h"
#include "fuchsia/base/test/test_navigation_listener.h"
#include "fuchsia/engine/test/frame_for_test.h"
Expand Down Expand Up @@ -43,13 +43,13 @@ void ValidateFavicon(const fuchsia::web::Favicon& favicon,
EXPECT_EQ(favicon.width(), expected_width);
ASSERT_TRUE(favicon.has_height());
EXPECT_EQ(favicon.height(), expected_height);
std::string data;
ASSERT_TRUE(favicon.has_data());
ASSERT_TRUE(cr_fuchsia::StringFromMemBuffer(favicon.data(), &data));
absl::optional<std::string> data = base::StringFromMemBuffer(favicon.data());
ASSERT_TRUE(data.has_value());
size_t expected_size = expected_width * expected_height * sizeof(uint32_t);
ASSERT_EQ(data.size(), expected_size);
ASSERT_EQ(data->size(), expected_size);
size_t offset = check_point_x + check_point_y * expected_width;
uint32_t color = reinterpret_cast<const uint32_t*>(data.data())[offset];
uint32_t color = reinterpret_cast<const uint32_t*>(data->data())[offset];
EXPECT_EQ(color, expected_color);
}

Expand Down
Loading

0 comments on commit af91533

Please sign in to comment.