Commit eb9f4300 authored by Sam Goto's avatar Sam Goto Committed by Commit Bot

[sms] Introduce a message handler and add a mapping in SharingService

Per instructions on the Unido design doc [1], this is the (2-4) step in
the process of creating a new Unido feature:

1) Add a new SharingMessage to the proto and update metrics mapping
2) Add your new SharingFCMHandler in SharingService constructor
3) Add a new feature in DeviceInfoSpecifics.EnabledFeatures
4) Add your enabled feature to SharingDeviceRegistration
5) Use SharingService to list device candidates, and use the new SendMessageToDevice to send messages

Step (1) is here:

https://chromium-review.googlesource.com/c/chromium/src/+/1867444

Steps (5) will follow in separate CLs, to ease reviewing and ease
other features tracking how to integrate.

Design Doc: https://docs.google.com/document/d/1da8CjO71DlFbBzDcSosFRXTvDsKII_XMCohpZLQ_QbM/edit?userstoinvite=himanshujaju%40google.com&ts=5da89bb1&actionButton=1

Bug: 1015645
Change-Id: Ia1ca925c107fb9ffe2e148ed0a82997268464657
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1867125Reviewed-by: default avatarTim Schumann <tschumann@chromium.org>
Reviewed-by: default avatarAlex Chau <alexchau@chromium.org>
Commit-Queue: Sam Goto <goto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707958}
parent 728acbed
...@@ -2844,6 +2844,10 @@ jumbo_static_library("browser") { ...@@ -2844,6 +2844,10 @@ jumbo_static_library("browser") {
"search_engines/template_url_service_factory_android.h", "search_engines/template_url_service_factory_android.h",
"sharing/shared_clipboard/shared_clipboard_message_handler_android.cc", "sharing/shared_clipboard/shared_clipboard_message_handler_android.cc",
"sharing/shared_clipboard/shared_clipboard_message_handler_android.h", "sharing/shared_clipboard/shared_clipboard_message_handler_android.h",
"sharing/sms/sms_fetch_request_handler.cc",
"sharing/sms/sms_fetch_request_handler.h",
"sharing/sms/sms_flags.cc",
"sharing/sms/sms_flags.h",
"signin/identity_services_provider_android.cc", "signin/identity_services_provider_android.cc",
"signin/signin_manager_android_factory.cc", "signin/signin_manager_android_factory.cc",
"signin/signin_manager_android_factory.h", "signin/signin_manager_android_factory.h",
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "chrome/browser/sharing/sharing_constants.h" #include "chrome/browser/sharing/sharing_constants.h"
#include "chrome/browser/sharing/sharing_device_registration_result.h" #include "chrome/browser/sharing/sharing_device_registration_result.h"
#include "chrome/browser/sharing/sharing_sync_preference.h" #include "chrome/browser/sharing/sharing_sync_preference.h"
#include "chrome/browser/sharing/sms/sms_flags.h"
#include "chrome/browser/sharing/vapid_key_manager.h" #include "chrome/browser/sharing/vapid_key_manager.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "components/gcm_driver/crypto/p256_key_util.h" #include "components/gcm_driver/crypto/p256_key_util.h"
...@@ -199,6 +200,8 @@ SharingDeviceRegistration::GetEnabledFeatures() const { ...@@ -199,6 +200,8 @@ SharingDeviceRegistration::GetEnabledFeatures() const {
enabled_features.insert(SharingSpecificFields::CLICK_TO_CALL); enabled_features.insert(SharingSpecificFields::CLICK_TO_CALL);
if (IsSharedClipboardSupported()) if (IsSharedClipboardSupported())
enabled_features.insert(SharingSpecificFields::SHARED_CLIPBOARD); enabled_features.insert(SharingSpecificFields::SHARED_CLIPBOARD);
if (IsSmsFetcherSupported())
enabled_features.insert(SharingSpecificFields::SMS_FETCHER);
return enabled_features; return enabled_features;
} }
...@@ -223,6 +226,14 @@ bool SharingDeviceRegistration::IsSharedClipboardSupported() const { ...@@ -223,6 +226,14 @@ bool SharingDeviceRegistration::IsSharedClipboardSupported() const {
return base::FeatureList::IsEnabled(kSharedClipboardReceiver); return base::FeatureList::IsEnabled(kSharedClipboardReceiver);
} }
bool SharingDeviceRegistration::IsSmsFetcherSupported() const {
#if defined(OS_ANDROID)
return base::FeatureList::IsEnabled(kSmsFetchRequestHandler);
#endif
return false;
}
void SharingDeviceRegistration::SetEnabledFeaturesForTesting( void SharingDeviceRegistration::SetEnabledFeaturesForTesting(
std::set<SharingSpecificFields::EnabledFeatures> enabled_features) { std::set<SharingSpecificFields::EnabledFeatures> enabled_features) {
enabled_features_testing_value_ = std::move(enabled_features); enabled_features_testing_value_ = std::move(enabled_features);
......
...@@ -51,6 +51,9 @@ class SharingDeviceRegistration { ...@@ -51,6 +51,9 @@ class SharingDeviceRegistration {
// Returns if device can handle receiving of shared clipboard contents. // Returns if device can handle receiving of shared clipboard contents.
virtual bool IsSharedClipboardSupported() const; virtual bool IsSharedClipboardSupported() const;
// Returns if device can handle receiving of sms fetcher requests.
virtual bool IsSmsFetcherSupported() const;
// For testing // For testing
void SetEnabledFeaturesForTesting( void SetEnabledFeaturesForTesting(
std::set<sync_pb::SharingSpecificFields_EnabledFeatures> std::set<sync_pb::SharingSpecificFields_EnabledFeatures>
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "chrome/browser/sharing/sharing_message_handler.h" #include "chrome/browser/sharing/sharing_message_handler.h"
#include "chrome/browser/sharing/sharing_metrics.h" #include "chrome/browser/sharing/sharing_metrics.h"
#include "chrome/browser/sharing/sharing_sync_preference.h" #include "chrome/browser/sharing/sharing_sync_preference.h"
#include "chrome/browser/sharing/sms/sms_fetch_request_handler.h"
#include "chrome/browser/sharing/vapid_key_manager.h" #include "chrome/browser/sharing/vapid_key_manager.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "components/gcm_driver/crypto/gcm_encryption_provider.h" #include "components/gcm_driver/crypto/gcm_encryption_provider.h"
...@@ -183,6 +184,13 @@ SharingService::SharingService( ...@@ -183,6 +184,13 @@ SharingService::SharingService(
chrome_browser_sharing::SharingMessage::kClickToCallMessage, chrome_browser_sharing::SharingMessage::kClickToCallMessage,
&click_to_call_message_handler_); &click_to_call_message_handler_);
} }
if (sharing_device_registration_->IsSmsFetcherSupported()) {
sms_fetch_request_handler_ = std::make_unique<SmsFetchRequestHandler>();
fcm_handler_->AddSharingHandler(
chrome_browser_sharing::SharingMessage::kSmsFetchRequest,
sms_fetch_request_handler_.get());
}
#endif // defined(OS_ANDROID) #endif // defined(OS_ANDROID)
if (sharing_device_registration_->IsSharedClipboardSupported()) { if (sharing_device_registration_->IsSharedClipboardSupported()) {
......
...@@ -47,6 +47,7 @@ class SharedClipboardMessageHandler; ...@@ -47,6 +47,7 @@ class SharedClipboardMessageHandler;
class SharingFCMHandler; class SharingFCMHandler;
class SharingFCMSender; class SharingFCMSender;
class SharingSyncPreference; class SharingSyncPreference;
class SmsFetchRequestHandler;
class VapidKeyManager; class VapidKeyManager;
enum class SharingDeviceRegistrationResult; enum class SharingDeviceRegistrationResult;
...@@ -209,6 +210,7 @@ class SharingService : public KeyedService, ...@@ -209,6 +210,7 @@ class SharingService : public KeyedService,
AckMessageHandler ack_message_handler_; AckMessageHandler ack_message_handler_;
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
ClickToCallMessageHandler click_to_call_message_handler_; ClickToCallMessageHandler click_to_call_message_handler_;
std::unique_ptr<SmsFetchRequestHandler> sms_fetch_request_handler_;
#endif // defined(OS_ANDROID) #endif // defined(OS_ANDROID)
std::unique_ptr<SharedClipboardMessageHandler> std::unique_ptr<SharedClipboardMessageHandler>
shared_clipboard_message_handler_; shared_clipboard_message_handler_;
......
// Copyright 2019 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/sharing/sms/sms_fetch_request_handler.h"
#include "base/logging.h"
#include "chrome/browser/sharing/proto/sms_fetch_request.pb.h"
SmsFetchRequestHandler::SmsFetchRequestHandler() = default;
SmsFetchRequestHandler::~SmsFetchRequestHandler() = default;
void SmsFetchRequestHandler::OnMessage(
const chrome_browser_sharing::SharingMessage& message) {
DCHECK(message.has_sms_fetch_request());
// TODO(crbug.com/1015645): implementation left pending deliberately.
NOTIMPLEMENTED();
}
// Copyright 2019 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_SHARING_SMS_SMS_FETCH_REQUEST_HANDLER_H_
#define CHROME_BROWSER_SHARING_SMS_SMS_FETCH_REQUEST_HANDLER_H_
#include "base/macros.h"
#include "chrome/browser/sharing/proto/sharing_message.pb.h"
#include "chrome/browser/sharing/sharing_message_handler.h"
// Handles incoming messages for the sms fetcher feature.
class SmsFetchRequestHandler : public SharingMessageHandler {
public:
SmsFetchRequestHandler();
~SmsFetchRequestHandler() override;
// SharingMessageHandler
void OnMessage(
const chrome_browser_sharing::SharingMessage& message) override;
private:
DISALLOW_COPY_AND_ASSIGN(SmsFetchRequestHandler);
};
#endif // CHROME_BROWSER_SHARING_SMS_SMS_FETCH_REQUEST_HANDLER_H_
// Copyright 2019 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/sharing/sms/sms_flags.h"
const base::Feature kSmsFetchRequestHandler{"kSmsFetchRequestHandler",
base::FEATURE_DISABLED_BY_DEFAULT};
// Copyright 2019 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_SHARING_SMS_SMS_FLAGS_H_
#define CHROME_BROWSER_SHARING_SMS_SMS_FLAGS_H_
#include "base/feature_list.h"
// Feature to allow devices to receive the sms fetch request.
extern const base::Feature kSmsFetchRequestHandler;
#endif // CHROME_BROWSER_SHARING_SMS_SMS_FLAGS_H_
...@@ -95,6 +95,7 @@ message SharingSpecificFields { ...@@ -95,6 +95,7 @@ message SharingSpecificFields {
UNKNOWN = 0; UNKNOWN = 0;
CLICK_TO_CALL = 1; CLICK_TO_CALL = 1;
SHARED_CLIPBOARD = 2; SHARED_CLIPBOARD = 2;
SMS_FETCHER = 3;
} }
// A list of enabled Sharing features. // A list of enabled Sharing features.
......
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