Skip to content

Commit

Permalink
[Nearby] Set network traffic annotations; add fake http client
Browse files Browse the repository at this point in the history
Bug: b/154863110
Change-Id: Iad98d2a12dd07e596ea97f361abe3aaaf2a6dabc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2280596
Commit-Queue: Josh Nohle <nohle@chromium.org>
Reviewed-by: Nicolas Ouellet-Payeur <nicolaso@chromium.org>
Reviewed-by: James Vecore <vecore@google.com>
Cr-Commit-Position: refs/heads/master@{#789589}
  • Loading branch information
nohle authored and Commit Bot committed Jul 17, 2020
1 parent 63f62f2 commit f7d2d36
Show file tree
Hide file tree
Showing 10 changed files with 483 additions and 80 deletions.
11 changes: 1 addition & 10 deletions chrome/browser/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -3292,16 +3292,6 @@ static_library("browser") {
"metrics/tab_stats_tracker.h",
"metrics/tab_stats_tracker_delegate.h",
"nearby_sharing/attachment.h",
"nearby_sharing/client/nearby_share_api_call_flow.h",
"nearby_sharing/client/nearby_share_api_call_flow_impl.cc",
"nearby_sharing/client/nearby_share_api_call_flow_impl.h",
"nearby_sharing/client/nearby_share_client.h",
"nearby_sharing/client/nearby_share_client_impl.cc",
"nearby_sharing/client/nearby_share_client_impl.h",
"nearby_sharing/client/nearby_share_request_error.cc",
"nearby_sharing/client/nearby_share_request_error.h",
"nearby_sharing/client/nearby_share_switches.cc",
"nearby_sharing/client/nearby_share_switches.h",
"nearby_sharing/fast_initiation_manager.cc",
"nearby_sharing/fast_initiation_manager.h",
"nearby_sharing/file_attachment.cc",
Expand Down Expand Up @@ -3742,6 +3732,7 @@ static_library("browser") {
"//chrome/app/vector_icons",
"//chrome/browser/media/kaleidoscope/mojom",
"//chrome/browser/nearby_sharing/certificates",
"//chrome/browser/nearby_sharing/client",
"//chrome/browser/nearby_sharing/instantmessaging/proto",
"//chrome/browser/nearby_sharing/logging",
"//chrome/browser/nearby_sharing/logging:util",
Expand Down
66 changes: 66 additions & 0 deletions chrome/browser/nearby_sharing/client/BUILD.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# 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.

source_set("client") {
sources = [
"nearby_share_api_call_flow.h",
"nearby_share_api_call_flow_impl.cc",
"nearby_share_api_call_flow_impl.h",
"nearby_share_client.h",
"nearby_share_client_impl.cc",
"nearby_share_client_impl.h",
"nearby_share_request_error.cc",
"nearby_share_request_error.h",
"nearby_share_switches.cc",
"nearby_share_switches.h",
]

deps = [
"//base",
"//chrome/browser/nearby_sharing/logging",
"//chrome/browser/nearby_sharing/proto",
"//components/signin/public/identity_manager",
"//net",
"//net/traffic_annotation",
"//services/network/public/cpp",
"//services/network/public/mojom",
"//url",
]
}

source_set("test_support") {
testonly = true

sources = [
"fake_nearby_share_client.cc",
"fake_nearby_share_client.h",
]

deps = [
":client",
"//base",
"//chrome/browser/nearby_sharing/proto",
]
}

source_set("unit_tests") {
testonly = true

sources = [
"nearby_share_api_call_flow_impl_unittest.cc",
"nearby_share_client_impl_unittest.cc",
]

deps = [
":client",
"//base",
"//base/test:test_support",
"//chrome/browser/nearby_sharing/proto",
"//components/signin/public/identity_manager:test_support",
"//net",
"//net/traffic_annotation:test_support",
"//services/network:test_support",
"//testing/gtest",
]
}
124 changes: 124 additions & 0 deletions chrome/browser/nearby_sharing/client/fake_nearby_share_client.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
// 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/client/fake_nearby_share_client.h"

#include <utility>

FakeNearbyShareClient::UpdateDeviceRequest::UpdateDeviceRequest(
const nearbyshare::proto::UpdateDeviceRequest& request,
UpdateDeviceCallback&& callback,
ErrorCallback&& error_callback)
: request(request),
callback(std::move(callback)),
error_callback(std::move(error_callback)) {}

FakeNearbyShareClient::UpdateDeviceRequest::UpdateDeviceRequest(
FakeNearbyShareClient::UpdateDeviceRequest&& request) = default;

FakeNearbyShareClient::UpdateDeviceRequest::~UpdateDeviceRequest() = default;

FakeNearbyShareClient::CheckContactsReachabilityRequest::
CheckContactsReachabilityRequest(
const nearbyshare::proto::CheckContactsReachabilityRequest& request,
CheckContactsReachabilityCallback&& callback,
ErrorCallback&& error_callback)
: request(request),
callback(std::move(callback)),
error_callback(std::move(error_callback)) {}

FakeNearbyShareClient::CheckContactsReachabilityRequest::
CheckContactsReachabilityRequest(
FakeNearbyShareClient::CheckContactsReachabilityRequest&& request) =
default;

FakeNearbyShareClient::CheckContactsReachabilityRequest::
~CheckContactsReachabilityRequest() = default;

FakeNearbyShareClient::ListContactPeopleRequest::ListContactPeopleRequest(
const nearbyshare::proto::ListContactPeopleRequest& request,
ListContactPeopleCallback&& callback,
ErrorCallback&& error_callback)
: request(request),
callback(std::move(callback)),
error_callback(std::move(error_callback)) {}

FakeNearbyShareClient::ListContactPeopleRequest::ListContactPeopleRequest(
FakeNearbyShareClient::ListContactPeopleRequest&& request) = default;

FakeNearbyShareClient::ListContactPeopleRequest::~ListContactPeopleRequest() =
default;

FakeNearbyShareClient::ListPublicCertificatesRequest::
ListPublicCertificatesRequest(
const nearbyshare::proto::ListPublicCertificatesRequest& request,
ListPublicCertificatesCallback&& callback,
ErrorCallback&& error_callback)
: request(request),
callback(std::move(callback)),
error_callback(std::move(error_callback)) {}

FakeNearbyShareClient::ListPublicCertificatesRequest::
ListPublicCertificatesRequest(
FakeNearbyShareClient::ListPublicCertificatesRequest&& request) =
default;

FakeNearbyShareClient::ListPublicCertificatesRequest::
~ListPublicCertificatesRequest() = default;

FakeNearbyShareClient::FakeNearbyShareClient() = default;

FakeNearbyShareClient::~FakeNearbyShareClient() = default;

void FakeNearbyShareClient::SetAccessTokenUsed(const std::string& token) {
access_token_used_ = token;
}

void FakeNearbyShareClient::UpdateDevice(
const nearbyshare::proto::UpdateDeviceRequest& request,
UpdateDeviceCallback&& callback,
ErrorCallback&& error_callback) {
update_device_requests_.emplace_back(request, std::move(callback),
std::move(error_callback));
}

void FakeNearbyShareClient::CheckContactsReachability(
const nearbyshare::proto::CheckContactsReachabilityRequest& request,
CheckContactsReachabilityCallback&& callback,
ErrorCallback&& error_callback) {
check_contacts_reachabilty_requests_.emplace_back(
request, std::move(callback), std::move(error_callback));
}

void FakeNearbyShareClient::ListContactPeople(
const nearbyshare::proto::ListContactPeopleRequest& request,
ListContactPeopleCallback&& callback,
ErrorCallback&& error_callback) {
list_contact_people_requests_.emplace_back(request, std::move(callback),
std::move(error_callback));
}

void FakeNearbyShareClient::ListPublicCertificates(
const nearbyshare::proto::ListPublicCertificatesRequest& request,
ListPublicCertificatesCallback&& callback,
ErrorCallback&& error_callback) {
list_public_certificates_requests_.emplace_back(request, std::move(callback),
std::move(error_callback));
}

std::string FakeNearbyShareClient::GetAccessTokenUsed() {
return access_token_used_;
}

FakeNearbyShareClientFactory::FakeNearbyShareClientFactory() = default;

FakeNearbyShareClientFactory::~FakeNearbyShareClientFactory() = default;

std::unique_ptr<NearbyShareClient>
FakeNearbyShareClientFactory::CreateInstance() {
auto instance = std::make_unique<FakeNearbyShareClient>();
instances_.push_back(instance.get());

return instance;
}
129 changes: 129 additions & 0 deletions chrome/browser/nearby_sharing/client/fake_nearby_share_client.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
// 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_CLIENT_FAKE_NEARBY_SHARE_CLIENT_H_
#define CHROME_BROWSER_NEARBY_SHARING_CLIENT_FAKE_NEARBY_SHARE_CLIENT_H_

#include <memory>
#include <string>

#include "base/callback.h"
#include "chrome/browser/nearby_sharing/client/nearby_share_client.h"
#include "chrome/browser/nearby_sharing/proto/certificate_rpc.pb.h"
#include "chrome/browser/nearby_sharing/proto/contact_rpc.pb.h"
#include "chrome/browser/nearby_sharing/proto/device_rpc.pb.h"

// A fake implementation of the Nearby Share HTTP client that stores all request
// data. Only use in unit tests.
class FakeNearbyShareClient : public NearbyShareClient {
public:
struct UpdateDeviceRequest {
UpdateDeviceRequest(const nearbyshare::proto::UpdateDeviceRequest& request,
UpdateDeviceCallback&& callback,
ErrorCallback&& error_callback);
UpdateDeviceRequest(UpdateDeviceRequest&& request);
~UpdateDeviceRequest();
nearbyshare::proto::UpdateDeviceRequest request;
UpdateDeviceCallback callback;
ErrorCallback error_callback;
};
struct CheckContactsReachabilityRequest {
CheckContactsReachabilityRequest(
const nearbyshare::proto::CheckContactsReachabilityRequest& request,
CheckContactsReachabilityCallback&& callback,
ErrorCallback&& error_callback);
CheckContactsReachabilityRequest(
CheckContactsReachabilityRequest&& request);
~CheckContactsReachabilityRequest();
nearbyshare::proto::CheckContactsReachabilityRequest request;
CheckContactsReachabilityCallback callback;
ErrorCallback error_callback;
};
struct ListContactPeopleRequest {
ListContactPeopleRequest(
const nearbyshare::proto::ListContactPeopleRequest& request,
ListContactPeopleCallback&& callback,
ErrorCallback&& error_callback);
ListContactPeopleRequest(ListContactPeopleRequest&& request);
~ListContactPeopleRequest();
nearbyshare::proto::ListContactPeopleRequest request;
ListContactPeopleCallback callback;
ErrorCallback error_callback;
};
struct ListPublicCertificatesRequest {
ListPublicCertificatesRequest(
const nearbyshare::proto::ListPublicCertificatesRequest& request,
ListPublicCertificatesCallback&& callback,
ErrorCallback&& error_callback);
ListPublicCertificatesRequest(ListPublicCertificatesRequest&& request);
~ListPublicCertificatesRequest();
nearbyshare::proto::ListPublicCertificatesRequest request;
ListPublicCertificatesCallback callback;
ErrorCallback error_callback;
};

FakeNearbyShareClient();
~FakeNearbyShareClient() override;

std::vector<UpdateDeviceRequest>& update_device_requests() {
return update_device_requests_;
}
std::vector<CheckContactsReachabilityRequest>&
check_contacts_reachabilty_requests() {
return check_contacts_reachabilty_requests_;
}
std::vector<ListContactPeopleRequest>& list_contact_people_requests() {
return list_contact_people_requests_;
}
std::vector<ListPublicCertificatesRequest>&
list_public_certificates_requests() {
return list_public_certificates_requests_;
}

void SetAccessTokenUsed(const std::string& token);

private:
// NearbyShareClient:
void UpdateDevice(const nearbyshare::proto::UpdateDeviceRequest& request,
UpdateDeviceCallback&& callback,
ErrorCallback&& error_callback) override;
void CheckContactsReachability(
const nearbyshare::proto::CheckContactsReachabilityRequest& request,
CheckContactsReachabilityCallback&& callback,
ErrorCallback&& error_callback) override;
void ListContactPeople(
const nearbyshare::proto::ListContactPeopleRequest& request,
ListContactPeopleCallback&& callback,
ErrorCallback&& error_callback) override;
void ListPublicCertificates(
const nearbyshare::proto::ListPublicCertificatesRequest& request,
ListPublicCertificatesCallback&& callback,
ErrorCallback&& error_callback) override;
std::string GetAccessTokenUsed() override;

std::vector<UpdateDeviceRequest> update_device_requests_;
std::vector<CheckContactsReachabilityRequest>
check_contacts_reachabilty_requests_;
std::vector<ListContactPeopleRequest> list_contact_people_requests_;
std::vector<ListPublicCertificatesRequest> list_public_certificates_requests_;
std::string access_token_used_;
};

class FakeNearbyShareClientFactory : public NearbyShareClientFactory {
public:
FakeNearbyShareClientFactory();
~FakeNearbyShareClientFactory();

public:
// Returns all FakeNearbyShareClient instances created by CreateInstance().
std::vector<FakeNearbyShareClient*>& instances() { return instances_; }

private:
// NearbyShareClientFactory:
std::unique_ptr<NearbyShareClient> CreateInstance() override;

std::vector<FakeNearbyShareClient*> instances_;
};

#endif // CHROME_BROWSER_NEARBY_SHARING_CLIENT_FAKE_NEARBY_SHARE_CLIENT_H_
17 changes: 4 additions & 13 deletions chrome/browser/nearby_sharing/client/nearby_share_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

#include "base/callback_forward.h"
#include "chrome/browser/nearby_sharing/client/nearby_share_request_error.h"
#include "net/traffic_annotation/network_traffic_annotation.h"

namespace nearbyshare {
namespace proto {
Expand Down Expand Up @@ -48,33 +47,25 @@ class NearbyShareClient {
virtual void UpdateDevice(
const nearbyshare::proto::UpdateDeviceRequest& request,
UpdateDeviceCallback&& callback,
ErrorCallback&& error_callback,
const net::PartialNetworkTrafficAnnotationTag&
partial_traffic_annotation) = 0;
ErrorCallback&& error_callback) = 0;

// NearbyShareService v1: CheckContactsReachability
virtual void CheckContactsReachability(
const nearbyshare::proto::CheckContactsReachabilityRequest& request,
CheckContactsReachabilityCallback&& callback,
ErrorCallback&& error_callback,
const net::PartialNetworkTrafficAnnotationTag&
partial_traffic_annotation) = 0;
ErrorCallback&& error_callback) = 0;

// NearbyShareService v1: ListContactPeople
virtual void ListContactPeople(
const nearbyshare::proto::ListContactPeopleRequest& request,
ListContactPeopleCallback&& callback,
ErrorCallback&& error_callback,
const net::PartialNetworkTrafficAnnotationTag&
partial_traffic_annotation) = 0;
ErrorCallback&& error_callback) = 0;

// NearbyShareService v1: ListPublicCertificates
virtual void ListPublicCertificates(
const nearbyshare::proto::ListPublicCertificatesRequest& request,
ListPublicCertificatesCallback&& callback,
ErrorCallback&& error_callback,
const net::PartialNetworkTrafficAnnotationTag&
partial_traffic_annotation) = 0;
ErrorCallback&& error_callback) = 0;

// Returns the access token used to make the request. If no request has been
// made yet, this function will return an empty string.
Expand Down
Loading

0 comments on commit f7d2d36

Please sign in to comment.