Commit 9dcf1d65 authored by Michael Hansen's avatar Michael Hansen Committed by Commit Bot

[Nearby] Extract WebRtcRequestBuilder functions.

This extracts the creation of request objects for WebRTC into a separate
file containing free functions. This better isolates this responsibility
and improves testability.

Fixed: 1134210
Change-Id: I817147d5c49dc0e461d4b54d07492e5a02f20ca7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2456867Reviewed-by: default avatarJames Vecore <vecore@google.com>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Commit-Queue: Michael Hansen <hansenmichael@google.com>
Cr-Commit-Position: refs/heads/master@{#815238}
parent 665f8639
...@@ -4215,6 +4215,8 @@ static_library("browser") { ...@@ -4215,6 +4215,8 @@ static_library("browser") {
"nearby_sharing/transfer_metadata_builder.cc", "nearby_sharing/transfer_metadata_builder.cc",
"nearby_sharing/transfer_metadata_builder.h", "nearby_sharing/transfer_metadata_builder.h",
"nearby_sharing/transfer_update_callback.h", "nearby_sharing/transfer_update_callback.h",
"nearby_sharing/webrtc_request_builder.cc",
"nearby_sharing/webrtc_request_builder.h",
"nearby_sharing/webrtc_signaling_messenger.cc", "nearby_sharing/webrtc_signaling_messenger.cc",
"nearby_sharing/webrtc_signaling_messenger.h", "nearby_sharing/webrtc_signaling_messenger.h",
"notifications/arc_application_notifier_controller.cc", "notifications/arc_application_notifier_controller.cc",
......
// Copyright 2020 The Chromium 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 "chrome/browser/nearby_sharing/webrtc_request_builder.h"
#include "base/check.h"
#include "base/i18n/timezone.h"
#include "chrome/browser/nearby_sharing/instantmessaging/proto/instantmessaging.pb.h"
namespace {
const char kAppName[] = "Nearby";
constexpr int kMajorVersion = 1;
constexpr int kMinorVersion = 24;
constexpr int kPointVersion = 0;
void BuildLocationHint(
chrome_browser_nearby_sharing_instantmessaging::LocationHint*
location_hint) {
location_hint->set_location(base::CountryCodeForCurrentTimezone());
location_hint->set_format(chrome_browser_nearby_sharing_instantmessaging::
LocationStandard_Format_ISO_3166_1_ALPHA_2);
}
void BuildId(chrome_browser_nearby_sharing_instantmessaging::Id* req_id,
const std::string& id) {
DCHECK(req_id);
req_id->set_id(id);
req_id->set_app(kAppName);
req_id->set_type(
chrome_browser_nearby_sharing_instantmessaging::IdType::NEARBY_ID);
BuildLocationHint(req_id->mutable_location_hint());
}
void BuildHeader(
chrome_browser_nearby_sharing_instantmessaging::RequestHeader* header,
const std::string& requester_id) {
DCHECK(header);
header->set_app(kAppName);
BuildId(header->mutable_requester_id(), requester_id);
chrome_browser_nearby_sharing_instantmessaging::ClientInfo* info =
header->mutable_client_info();
info->set_api_version(
chrome_browser_nearby_sharing_instantmessaging::ApiVersion::V4);
info->set_platform_type(
chrome_browser_nearby_sharing_instantmessaging::Platform::DESKTOP);
info->set_version_major(kMajorVersion);
info->set_version_minor(kMinorVersion);
info->set_version_point(kPointVersion);
}
} // namespace
chrome_browser_nearby_sharing_instantmessaging::SendMessageExpressRequest
BuildSendRequest(const std::string& self_id, const std::string& peer_id) {
chrome_browser_nearby_sharing_instantmessaging::SendMessageExpressRequest
request;
BuildId(request.mutable_dest_id(), peer_id);
BuildHeader(request.mutable_header(), self_id);
return request;
}
chrome_browser_nearby_sharing_instantmessaging::ReceiveMessagesExpressRequest
BuildReceiveRequest(const std::string& self_id) {
chrome_browser_nearby_sharing_instantmessaging::ReceiveMessagesExpressRequest
request;
BuildHeader(request.mutable_header(), self_id);
return request;
}
// Copyright 2020 The Chromium 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 CHROME_BROWSER_NEARBY_SHARING_WEBRTC_REQUEST_BUILDER_H_
#define CHROME_BROWSER_NEARBY_SHARING_WEBRTC_REQUEST_BUILDER_H_
#include <string>
namespace chrome_browser_nearby_sharing_instantmessaging {
class SendMessageExpressRequest;
class ReceiveMessagesExpressRequest;
} // namespace chrome_browser_nearby_sharing_instantmessaging
chrome_browser_nearby_sharing_instantmessaging::SendMessageExpressRequest
BuildSendRequest(const std::string& self_id, const std::string& peer_id);
chrome_browser_nearby_sharing_instantmessaging::ReceiveMessagesExpressRequest
BuildReceiveRequest(const std::string& self_id);
#endif // CHROME_BROWSER_NEARBY_SHARING_WEBRTC_REQUEST_BUILDER_H_
// Copyright 2020 The Chromium 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 "chrome/browser/nearby_sharing/webrtc_request_builder.h"
#include "base/i18n/timezone.h"
#include "chrome/browser/nearby_sharing/instantmessaging/proto/instantmessaging.pb.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/icu/source/i18n/unicode/timezone.h"
namespace {
const char kSelfId[] = "my_id";
const char kPeerId[] = "their_id";
} // namespace
class WebRtcRequestBuilderTest : public testing::Test {
public:
void SetUp() override {
icu::TimeZone::adoptDefault(
icu::TimeZone::createTimeZone("America/Los_Angeles"));
}
void VerifyLocationHint(
chrome_browser_nearby_sharing_instantmessaging::Id id) {
EXPECT_EQ(chrome_browser_nearby_sharing_instantmessaging::
LocationStandard_Format_ISO_3166_1_ALPHA_2,
id.location_hint().format());
EXPECT_EQ("US", id.location_hint().location());
}
};
TEST_F(WebRtcRequestBuilderTest, BuildSendRequest) {
chrome_browser_nearby_sharing_instantmessaging::SendMessageExpressRequest
request = BuildSendRequest(kSelfId, kPeerId);
EXPECT_EQ(kSelfId, request.header().requester_id().id());
EXPECT_EQ(kPeerId, request.dest_id().id());
VerifyLocationHint(request.dest_id());
VerifyLocationHint(request.header().requester_id());
}
TEST_F(WebRtcRequestBuilderTest, BuildReceiveRequest) {
chrome_browser_nearby_sharing_instantmessaging::ReceiveMessagesExpressRequest
request = BuildReceiveRequest(kSelfId);
EXPECT_EQ(kSelfId, request.header().requester_id().id());
VerifyLocationHint(request.header().requester_id());
}
...@@ -5,53 +5,9 @@ ...@@ -5,53 +5,9 @@
#include "chrome/browser/nearby_sharing/webrtc_signaling_messenger.h" #include "chrome/browser/nearby_sharing/webrtc_signaling_messenger.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/i18n/timezone.h"
#include "base/token.h" #include "base/token.h"
#include "chrome/browser/nearby_sharing/instantmessaging/proto/instantmessaging.pb.h" #include "chrome/browser/nearby_sharing/instantmessaging/proto/instantmessaging.pb.h"
#include "chrome/browser/nearby_sharing/webrtc_request_builder.h"
namespace {
const char kAppName[] = "Nearby";
constexpr int kMajorVersion = 1;
constexpr int kMinorVersion = 24;
constexpr int kPointVersion = 0;
void BuildLocationHint(
chrome_browser_nearby_sharing_instantmessaging::LocationHint* hint) {
hint->set_location(base::CountryCodeForCurrentTimezone());
hint->set_format(chrome_browser_nearby_sharing_instantmessaging::
LocationStandard_Format_ISO_3166_1_ALPHA_2);
}
void BuildId(chrome_browser_nearby_sharing_instantmessaging::Id* req_id,
const std::string& id) {
DCHECK(req_id);
req_id->set_id(id);
req_id->set_app(kAppName);
req_id->set_type(
chrome_browser_nearby_sharing_instantmessaging::IdType::NEARBY_ID);
BuildLocationHint(req_id->mutable_location_hint());
}
void BuildHeader(
chrome_browser_nearby_sharing_instantmessaging::RequestHeader* header,
const std::string& requester_id) {
DCHECK(header);
header->set_app(kAppName);
BuildId(header->mutable_requester_id(), requester_id);
chrome_browser_nearby_sharing_instantmessaging::ClientInfo* info =
header->mutable_client_info();
info->set_api_version(
chrome_browser_nearby_sharing_instantmessaging::ApiVersion::V4);
info->set_platform_type(
chrome_browser_nearby_sharing_instantmessaging::Platform::DESKTOP);
info->set_version_major(kMajorVersion);
info->set_version_minor(kMinorVersion);
info->set_version_point(kPointVersion);
}
} // namespace
WebRtcSignalingMessenger::WebRtcSignalingMessenger( WebRtcSignalingMessenger::WebRtcSignalingMessenger(
signin::IdentityManager* identity_manager, signin::IdentityManager* identity_manager,
...@@ -67,9 +23,7 @@ void WebRtcSignalingMessenger::SendMessage(const std::string& self_id, ...@@ -67,9 +23,7 @@ void WebRtcSignalingMessenger::SendMessage(const std::string& self_id,
const std::string& message, const std::string& message,
SendMessageCallback callback) { SendMessageCallback callback) {
chrome_browser_nearby_sharing_instantmessaging::SendMessageExpressRequest chrome_browser_nearby_sharing_instantmessaging::SendMessageExpressRequest
request; request = BuildSendRequest(self_id, peer_id);
BuildId(request.mutable_dest_id(), peer_id);
BuildHeader(request.mutable_header(), self_id);
chrome_browser_nearby_sharing_instantmessaging::InboxMessage* inbox_message = chrome_browser_nearby_sharing_instantmessaging::InboxMessage* inbox_message =
request.mutable_message(); request.mutable_message();
...@@ -89,8 +43,7 @@ void WebRtcSignalingMessenger::StartReceivingMessages( ...@@ -89,8 +43,7 @@ void WebRtcSignalingMessenger::StartReceivingMessages(
incoming_messages_listener, incoming_messages_listener,
StartReceivingMessagesCallback callback) { StartReceivingMessagesCallback callback) {
chrome_browser_nearby_sharing_instantmessaging::ReceiveMessagesExpressRequest chrome_browser_nearby_sharing_instantmessaging::ReceiveMessagesExpressRequest
request; request = BuildReceiveRequest(self_id);
BuildHeader(request.mutable_header(), self_id);
incoming_messages_listener_.reset(); incoming_messages_listener_.reset();
incoming_messages_listener_.Bind(std::move(incoming_messages_listener)); incoming_messages_listener_.Bind(std::move(incoming_messages_listener));
......
...@@ -4855,6 +4855,7 @@ test("unit_tests") { ...@@ -4855,6 +4855,7 @@ test("unit_tests") {
"../browser/nearby_sharing/paired_key_verification_runner_unittest.cc", "../browser/nearby_sharing/paired_key_verification_runner_unittest.cc",
"../browser/nearby_sharing/payload_tracker_unittest.cc", "../browser/nearby_sharing/payload_tracker_unittest.cc",
"../browser/nearby_sharing/text_attachment_unittest.cc", "../browser/nearby_sharing/text_attachment_unittest.cc",
"../browser/nearby_sharing/webrtc_request_builder_unittest.cc",
"../browser/nearby_sharing/webrtc_signaling_messenger_unittest.cc", "../browser/nearby_sharing/webrtc_signaling_messenger_unittest.cc",
"../browser/notifications/chrome_ash_message_center_client_unittest.cc", "../browser/notifications/chrome_ash_message_center_client_unittest.cc",
"../browser/notifications/web_page_notifier_controller_unittest.cc", "../browser/notifications/web_page_notifier_controller_unittest.cc",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment