Commit 60838521 authored by Regan Hsu's avatar Regan Hsu Committed by Commit Bot

[CrOS PhoneHub] Expose Notification Access Setup operation status to JS.

* Plumbs PhoneHubManager from OsSettingsManager to MultideviceSection,
  and from there NotificationAccessManager to MultideviceHandler.
* MultideviceHandler will receive NotificationAccessSetupOperation
  Status and notify the JS layer.
* MultideviceHandler listens to Cancel and Start setup events.

Bug: 1106937
Change-Id: I28a755da5f535b6b3039f1950f3458e6b3444952
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2364020
Commit-Queue: Regan Hsu <hsuregan@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#800021}
parent a60e4d52
...@@ -3623,6 +3623,7 @@ source_set("unit_tests") { ...@@ -3623,6 +3623,7 @@ source_set("unit_tests") {
"//chromeos/attestation:test_support", "//chromeos/attestation:test_support",
"//chromeos/audio", "//chromeos/audio",
"//chromeos/components/multidevice:test_support", "//chromeos/components/multidevice:test_support",
"//chromeos/components/phonehub:test_support",
"//chromeos/components/proximity_auth", "//chromeos/components/proximity_auth",
"//chromeos/components/proximity_auth:test_support", "//chromeos/components/proximity_auth:test_support",
"//chromeos/components/tether:test_support", "//chromeos/components/tether:test_support",
......
...@@ -2522,6 +2522,7 @@ static_library("ui") { ...@@ -2522,6 +2522,7 @@ static_library("ui") {
"//chromeos/components/multidevice", "//chromeos/components/multidevice",
"//chromeos/components/multidevice/debug_webui", "//chromeos/components/multidevice/debug_webui",
"//chromeos/components/multidevice/logging", "//chromeos/components/multidevice/logging",
"//chromeos/components/phonehub",
"//chromeos/components/print_management", "//chromeos/components/print_management",
"//chromeos/components/proximity_auth", "//chromeos/components/proximity_auth",
"//chromeos/components/quick_answers", "//chromeos/components/quick_answers",
......
...@@ -16,7 +16,9 @@ ...@@ -16,7 +16,9 @@
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h" #include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h"
#include "chromeos/components/multidevice/logging/logging.h" #include "chromeos/components/multidevice/logging/logging.h"
#include "chromeos/components/phonehub/notification_access_manager.h"
#include "chromeos/components/proximity_auth/proximity_auth_pref_names.h" #include "chromeos/components/proximity_auth/proximity_auth_pref_names.h"
#include "chromeos/constants/chromeos_features.h"
#include "chromeos/services/multidevice_setup/public/cpp/prefs.h" #include "chromeos/services/multidevice_setup/public/cpp/prefs.h"
#include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_pattern.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
...@@ -60,11 +62,13 @@ void OnRetrySetHostNowResult(bool success) { ...@@ -60,11 +62,13 @@ void OnRetrySetHostNowResult(bool success) {
MultideviceHandler::MultideviceHandler( MultideviceHandler::MultideviceHandler(
PrefService* prefs, PrefService* prefs,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::NotificationAccessManager* notification_access_manager,
multidevice_setup::AndroidSmsPairingStateTracker* multidevice_setup::AndroidSmsPairingStateTracker*
android_sms_pairing_state_tracker, android_sms_pairing_state_tracker,
android_sms::AndroidSmsAppManager* android_sms_app_manager) android_sms::AndroidSmsAppManager* android_sms_app_manager)
: prefs_(prefs), : prefs_(prefs),
multidevice_setup_client_(multidevice_setup_client), multidevice_setup_client_(multidevice_setup_client),
notification_access_manager_(notification_access_manager),
android_sms_pairing_state_tracker_(android_sms_pairing_state_tracker), android_sms_pairing_state_tracker_(android_sms_pairing_state_tracker),
android_sms_app_manager_(android_sms_app_manager), android_sms_app_manager_(android_sms_app_manager),
multidevice_setup_observer_(this), multidevice_setup_observer_(this),
...@@ -116,6 +120,14 @@ void MultideviceHandler::RegisterMessages() { ...@@ -116,6 +120,14 @@ void MultideviceHandler::RegisterMessages() {
"getAndroidSmsInfo", "getAndroidSmsInfo",
base::BindRepeating(&MultideviceHandler::HandleGetAndroidSmsInfo, base::BindRepeating(&MultideviceHandler::HandleGetAndroidSmsInfo,
base::Unretained(this))); base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"attemptNotificationSetup",
base::BindRepeating(&MultideviceHandler::HandleAttemptNotificationSetup,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"cancelNotificationSetup",
base::BindRepeating(&MultideviceHandler::HandleCancelNotificationSetup,
base::Unretained(this)));
} }
void MultideviceHandler::OnJavascriptAllowed() { void MultideviceHandler::OnJavascriptAllowed() {
...@@ -148,6 +160,9 @@ void MultideviceHandler::OnJavascriptDisallowed() { ...@@ -148,6 +160,9 @@ void MultideviceHandler::OnJavascriptDisallowed() {
if (multidevice_setup_client_) if (multidevice_setup_client_)
multidevice_setup_observer_.Remove(multidevice_setup_client_); multidevice_setup_observer_.Remove(multidevice_setup_client_);
if (notification_access_manager_)
notification_access_operation_.reset();
if (android_sms_pairing_state_tracker_) { if (android_sms_pairing_state_tracker_) {
android_sms_pairing_state_tracker_observer_.Remove( android_sms_pairing_state_tracker_observer_.Remove(
android_sms_pairing_state_tracker_); android_sms_pairing_state_tracker_);
...@@ -337,7 +352,6 @@ MultideviceHandler::GenerateAndroidSmsInfo() { ...@@ -337,7 +352,6 @@ MultideviceHandler::GenerateAndroidSmsInfo() {
} }
void MultideviceHandler::HandleGetAndroidSmsInfo(const base::ListValue* args) { void MultideviceHandler::HandleGetAndroidSmsInfo(const base::ListValue* args) {
AllowJavascript();
CHECK_EQ(1U, args->GetSize()); CHECK_EQ(1U, args->GetSize());
const base::Value* callback_id; const base::Value* callback_id;
CHECK(args->Get(0, &callback_id)); CHECK(args->Get(0, &callback_id));
...@@ -345,6 +359,39 @@ void MultideviceHandler::HandleGetAndroidSmsInfo(const base::ListValue* args) { ...@@ -345,6 +359,39 @@ void MultideviceHandler::HandleGetAndroidSmsInfo(const base::ListValue* args) {
ResolveJavascriptCallback(*callback_id, *GenerateAndroidSmsInfo()); ResolveJavascriptCallback(*callback_id, *GenerateAndroidSmsInfo());
} }
void MultideviceHandler::HandleAttemptNotificationSetup(
const base::ListValue* args) {
DCHECK(features::IsPhoneHubEnabled());
DCHECK(!notification_access_operation_);
if (notification_access_manager_->HasAccessBeenGranted()) {
PA_LOG(WARNING) << "Phonehub notification access has already been granted, "
"returning early.";
return;
}
notification_access_operation_ =
notification_access_manager_->AttemptNotificationSetup(/*delegate=*/this);
DCHECK(notification_access_operation_);
}
void MultideviceHandler::HandleCancelNotificationSetup(
const base::ListValue* args) {
DCHECK(features::IsPhoneHubEnabled());
DCHECK(notification_access_operation_);
notification_access_operation_.reset();
}
void MultideviceHandler::OnStatusChange(
phonehub::NotificationAccessSetupOperation::Status new_status) {
FireWebUIListener("notification-access-setup-operation-status-changed",
base::Value(static_cast<int32_t>(new_status)));
if (phonehub::NotificationAccessSetupOperation::IsFinalStatus(new_status))
notification_access_operation_.reset();
}
void MultideviceHandler::OnSetFeatureStateEnabledResult( void MultideviceHandler::OnSetFeatureStateEnabledResult(
const std::string& js_callback_id, const std::string& js_callback_id,
bool success) { bool success) {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h" #include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h"
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h" #include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
#include "chromeos/components/multidevice/remote_device_ref.h" #include "chromeos/components/multidevice/remote_device_ref.h"
#include "chromeos/components/phonehub/notification_access_setup_operation.h"
#include "chromeos/services/multidevice_setup/public/cpp/multidevice_setup_client.h" #include "chromeos/services/multidevice_setup/public/cpp/multidevice_setup_client.h"
#include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom-forward.h" #include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom-forward.h"
#include "components/prefs/pref_change_registrar.h" #include "components/prefs/pref_change_registrar.h"
...@@ -24,6 +25,10 @@ class DictionaryValue; ...@@ -24,6 +25,10 @@ class DictionaryValue;
namespace chromeos { namespace chromeos {
namespace phonehub {
class NotificationAccessManager;
} // namespace phonehub
namespace settings { namespace settings {
// Chrome "Multidevice" (a.k.a. "Connected Devices") settings page UI handler. // Chrome "Multidevice" (a.k.a. "Connected Devices") settings page UI handler.
...@@ -31,11 +36,13 @@ class MultideviceHandler ...@@ -31,11 +36,13 @@ class MultideviceHandler
: public ::settings::SettingsPageUIHandler, : public ::settings::SettingsPageUIHandler,
public multidevice_setup::MultiDeviceSetupClient::Observer, public multidevice_setup::MultiDeviceSetupClient::Observer,
public multidevice_setup::AndroidSmsPairingStateTracker::Observer, public multidevice_setup::AndroidSmsPairingStateTracker::Observer,
public android_sms::AndroidSmsAppManager::Observer { public android_sms::AndroidSmsAppManager::Observer,
public phonehub::NotificationAccessSetupOperation::Delegate {
public: public:
MultideviceHandler( MultideviceHandler(
PrefService* prefs, PrefService* prefs,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::NotificationAccessManager* notification_access_manager,
multidevice_setup::AndroidSmsPairingStateTracker* multidevice_setup::AndroidSmsPairingStateTracker*
android_sms_pairing_state_tracker, android_sms_pairing_state_tracker,
android_sms::AndroidSmsAppManager* android_sms_app_manager); android_sms::AndroidSmsAppManager* android_sms_app_manager);
...@@ -58,6 +65,10 @@ class MultideviceHandler ...@@ -58,6 +65,10 @@ class MultideviceHandler
const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap& const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap&
feature_states_map) override; feature_states_map) override;
// NotificationAccessSetupOperation::Delegate:
void OnStatusChange(
phonehub::NotificationAccessSetupOperation::Status new_status) override;
// multidevice_setup::AndroidSmsPairingStateTracker::Observer: // multidevice_setup::AndroidSmsPairingStateTracker::Observer:
void OnPairingStateChanged() override; void OnPairingStateChanged() override;
...@@ -78,6 +89,8 @@ class MultideviceHandler ...@@ -78,6 +89,8 @@ class MultideviceHandler
void HandleSetSmartLockSignInEnabled(const base::ListValue* args); void HandleSetSmartLockSignInEnabled(const base::ListValue* args);
void HandleGetSmartLockSignInAllowed(const base::ListValue* args); void HandleGetSmartLockSignInAllowed(const base::ListValue* args);
void HandleGetAndroidSmsInfo(const base::ListValue* args); void HandleGetAndroidSmsInfo(const base::ListValue* args);
void HandleAttemptNotificationSetup(const base::ListValue* args);
void HandleCancelNotificationSetup(const base::ListValue* args);
void OnSetFeatureStateEnabledResult(const std::string& js_callback_id, void OnSetFeatureStateEnabledResult(const std::string& js_callback_id,
bool success); bool success);
...@@ -110,6 +123,11 @@ class MultideviceHandler ...@@ -110,6 +123,11 @@ class MultideviceHandler
GetFeatureStatesMap(); GetFeatureStatesMap();
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_; multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_;
phonehub::NotificationAccessManager* notification_access_manager_;
std::unique_ptr<phonehub::NotificationAccessSetupOperation>
notification_access_operation_;
multidevice_setup::AndroidSmsPairingStateTracker* multidevice_setup::AndroidSmsPairingStateTracker*
android_sms_pairing_state_tracker_; android_sms_pairing_state_tracker_;
android_sms::AndroidSmsAppManager* android_sms_app_manager_; android_sms::AndroidSmsAppManager* android_sms_app_manager_;
......
...@@ -7,9 +7,12 @@ ...@@ -7,9 +7,12 @@
#include <memory> #include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/chromeos/android_sms/android_sms_urls.h" #include "chrome/browser/chromeos/android_sms/android_sms_urls.h"
#include "chrome/browser/chromeos/android_sms/fake_android_sms_app_manager.h" #include "chrome/browser/chromeos/android_sms/fake_android_sms_app_manager.h"
#include "chromeos/components/multidevice/remote_device_test_util.h" #include "chromeos/components/multidevice/remote_device_test_util.h"
#include "chromeos/components/phonehub/fake_notification_access_manager.h"
#include "chromeos/constants/chromeos_features.h"
#include "chromeos/services/multidevice_setup/public/cpp/fake_android_sms_pairing_state_tracker.h" #include "chromeos/services/multidevice_setup/public/cpp/fake_android_sms_pairing_state_tracker.h"
#include "chromeos/services/multidevice_setup/public/cpp/fake_multidevice_setup_client.h" #include "chromeos/services/multidevice_setup/public/cpp/fake_multidevice_setup_client.h"
#include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_pattern.h"
...@@ -28,11 +31,13 @@ class TestMultideviceHandler : public MultideviceHandler { ...@@ -28,11 +31,13 @@ class TestMultideviceHandler : public MultideviceHandler {
TestMultideviceHandler( TestMultideviceHandler(
PrefService* prefs, PrefService* prefs,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::NotificationAccessManager* notification_access_manager,
multidevice_setup::AndroidSmsPairingStateTracker* multidevice_setup::AndroidSmsPairingStateTracker*
android_sms_pairing_state_tracker, android_sms_pairing_state_tracker,
android_sms::AndroidSmsAppManager* android_sms_app_manager) android_sms::AndroidSmsAppManager* android_sms_app_manager)
: MultideviceHandler(prefs, : MultideviceHandler(prefs,
multidevice_setup_client, multidevice_setup_client,
notification_access_manager,
android_sms_pairing_state_tracker, android_sms_pairing_state_tracker,
android_sms_app_manager) {} android_sms_app_manager) {}
~TestMultideviceHandler() override = default; ~TestMultideviceHandler() override = default;
...@@ -153,6 +158,9 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -153,6 +158,9 @@ class MultideviceHandlerTest : public testing::Test {
fake_multidevice_setup_client_ = fake_multidevice_setup_client_ =
std::make_unique<multidevice_setup::FakeMultiDeviceSetupClient>(); std::make_unique<multidevice_setup::FakeMultiDeviceSetupClient>();
fake_notification_access_manager_ =
std::make_unique<phonehub::FakeNotificationAccessManager>(
/*has_access_been_granted=*/false);
fake_android_sms_pairing_state_tracker_ = std::make_unique< fake_android_sms_pairing_state_tracker_ = std::make_unique<
multidevice_setup::FakeAndroidSmsPairingStateTracker>(); multidevice_setup::FakeAndroidSmsPairingStateTracker>();
fake_android_sms_app_manager_ = fake_android_sms_app_manager_ =
...@@ -162,11 +170,14 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -162,11 +170,14 @@ class MultideviceHandlerTest : public testing::Test {
handler_ = std::make_unique<TestMultideviceHandler>( handler_ = std::make_unique<TestMultideviceHandler>(
prefs_.get(), fake_multidevice_setup_client_.get(), prefs_.get(), fake_multidevice_setup_client_.get(),
fake_notification_access_manager_.get(),
fake_android_sms_pairing_state_tracker_.get(), fake_android_sms_pairing_state_tracker_.get(),
fake_android_sms_app_manager_.get()); fake_android_sms_app_manager_.get());
handler_->set_web_ui(test_web_ui_.get()); handler_->set_web_ui(test_web_ui_.get());
handler_->RegisterMessages(); handler_->RegisterMessages();
handler_->AllowJavascript(); handler_->AllowJavascript();
scoped_feature_list_.InitWithFeatures({chromeos::features::kPhoneHub}, {});
} }
void CallGetPageContentData() { void CallGetPageContentData() {
...@@ -217,6 +228,20 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -217,6 +228,20 @@ class MultideviceHandlerTest : public testing::Test {
call_data.arg3()->FindKey("enabled")->GetBool()); call_data.arg3()->FindKey("enabled")->GetBool());
} }
void CallAttemptNotificationSetup(bool has_access_been_granted) {
fake_notification_access_manager()->SetHasAccessBeenGranted(
has_access_been_granted);
base::ListValue empty_args;
test_web_ui()->HandleReceivedMessage("attemptNotificationSetup",
&empty_args);
}
void CallCancelNotificationSetup() {
base::ListValue empty_args;
test_web_ui()->HandleReceivedMessage("cancelNotificationSetup",
&empty_args);
}
void SimulateHostStatusUpdate( void SimulateHostStatusUpdate(
multidevice_setup::mojom::HostStatus host_status, multidevice_setup::mojom::HostStatus host_status,
const base::Optional<multidevice::RemoteDeviceRef>& host_device) { const base::Optional<multidevice::RemoteDeviceRef>& host_device) {
...@@ -325,6 +350,31 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -325,6 +350,31 @@ class MultideviceHandlerTest : public testing::Test {
return fake_android_sms_app_manager_.get(); return fake_android_sms_app_manager_.get();
} }
phonehub::FakeNotificationAccessManager* fake_notification_access_manager() {
return fake_notification_access_manager_.get();
}
void SimulateNotificationOptInStatusChange(
phonehub::NotificationAccessSetupOperation::Status status) {
size_t call_data_count_before_call = test_web_ui()->call_data().size();
fake_notification_access_manager()->SetNotificationSetupOperationStatus(
status);
EXPECT_EQ(call_data_count_before_call + 1u,
test_web_ui()->call_data().size());
const content::TestWebUI::CallData& call_data =
CallDataAtIndex(call_data_count_before_call);
EXPECT_EQ("cr.webUIListenerCallback", call_data.function_name());
EXPECT_EQ("notification-access-setup-operation-status-changed",
call_data.arg1()->GetString());
EXPECT_EQ(call_data.arg2()->GetInt(), static_cast<int32_t>(status));
}
bool IsNotificationAccessSetupOperationInProgress() {
return fake_notification_access_manager()->IsSetupOperationInProgress();
}
const multidevice::RemoteDeviceRef test_device_; const multidevice::RemoteDeviceRef test_device_;
private: private:
...@@ -339,6 +389,8 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -339,6 +389,8 @@ class MultideviceHandlerTest : public testing::Test {
std::unique_ptr<content::TestWebUI> test_web_ui_; std::unique_ptr<content::TestWebUI> test_web_ui_;
std::unique_ptr<multidevice_setup::FakeMultiDeviceSetupClient> std::unique_ptr<multidevice_setup::FakeMultiDeviceSetupClient>
fake_multidevice_setup_client_; fake_multidevice_setup_client_;
std::unique_ptr<phonehub::FakeNotificationAccessManager>
fake_notification_access_manager_;
std::unique_ptr<multidevice_setup::FakeAndroidSmsPairingStateTracker> std::unique_ptr<multidevice_setup::FakeAndroidSmsPairingStateTracker>
fake_android_sms_pairing_state_tracker_; fake_android_sms_pairing_state_tracker_;
...@@ -351,9 +403,60 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -351,9 +403,60 @@ class MultideviceHandlerTest : public testing::Test {
std::unique_ptr<TestMultideviceHandler> handler_; std::unique_ptr<TestMultideviceHandler> handler_;
base::test::ScopedFeatureList scoped_feature_list_;
DISALLOW_COPY_AND_ASSIGN(MultideviceHandlerTest); DISALLOW_COPY_AND_ASSIGN(MultideviceHandlerTest);
}; };
TEST_F(MultideviceHandlerTest, NotificationSetupFlow) {
using Status = phonehub::NotificationAccessSetupOperation::Status;
// Simulate success flow.
CallAttemptNotificationSetup(/*has_access_been_granted=*/false);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(Status::kConnecting);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(
Status::kSentMessageToPhoneAndWaitingForResponse);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(Status::kCompletedSuccessfully);
EXPECT_FALSE(IsNotificationAccessSetupOperationInProgress());
// Simulate cancel flow.
CallAttemptNotificationSetup(/*has_access_been_granted=*/false);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
CallCancelNotificationSetup();
EXPECT_FALSE(IsNotificationAccessSetupOperationInProgress());
// Simulate failure via time-out flow.
CallAttemptNotificationSetup(/*has_access_been_granted=*/false);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(Status::kConnecting);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(Status::kTimedOutConnecting);
EXPECT_FALSE(IsNotificationAccessSetupOperationInProgress());
// Simulate failure via connected then disconnected flow.
CallAttemptNotificationSetup(/*has_access_been_granted=*/false);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(Status::kConnecting);
EXPECT_TRUE(IsNotificationAccessSetupOperationInProgress());
SimulateNotificationOptInStatusChange(Status::kConnectionDisconnected);
EXPECT_FALSE(IsNotificationAccessSetupOperationInProgress());
// If access has already been granted, a setup operation should not occur.
CallAttemptNotificationSetup(/*has_access_been_granted=*/true);
EXPECT_FALSE(IsNotificationAccessSetupOperationInProgress());
}
TEST_F(MultideviceHandlerTest, PageContentData) { TEST_F(MultideviceHandlerTest, PageContentData) {
CallGetPageContentData(); CallGetPageContentData();
CallGetPageContentData(); CallGetPageContentData();
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "chrome/common/url_constants.h" #include "chrome/common/url_constants.h"
#include "chrome/common/webui_url_constants.h" #include "chrome/common/webui_url_constants.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "chromeos/components/phonehub/phone_hub_manager.h"
#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_features.h"
#include "chromeos/services/multidevice_setup/public/cpp/prefs.h" #include "chromeos/services/multidevice_setup/public/cpp/prefs.h"
#include "chromeos/services/multidevice_setup/public/cpp/url_provider.h" #include "chromeos/services/multidevice_setup/public/cpp/url_provider.h"
...@@ -195,10 +196,12 @@ MultiDeviceSection::MultiDeviceSection( ...@@ -195,10 +196,12 @@ MultiDeviceSection::MultiDeviceSection(
Profile* profile, Profile* profile,
SearchTagRegistry* search_tag_registry, SearchTagRegistry* search_tag_registry,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::PhoneHubManager* phone_hub_manager,
android_sms::AndroidSmsService* android_sms_service, android_sms::AndroidSmsService* android_sms_service,
PrefService* pref_service) PrefService* pref_service)
: OsSettingsSection(profile, search_tag_registry), : OsSettingsSection(profile, search_tag_registry),
multidevice_setup_client_(multidevice_setup_client), multidevice_setup_client_(multidevice_setup_client),
phone_hub_manager_(phone_hub_manager),
android_sms_service_(android_sms_service), android_sms_service_(android_sms_service),
pref_service_(pref_service) { pref_service_(pref_service) {
if (base::FeatureList::IsEnabled(::features::kNearbySharing)) { if (base::FeatureList::IsEnabled(::features::kNearbySharing)) {
...@@ -321,6 +324,8 @@ void MultiDeviceSection::AddHandlers(content::WebUI* web_ui) { ...@@ -321,6 +324,8 @@ void MultiDeviceSection::AddHandlers(content::WebUI* web_ui) {
web_ui->AddMessageHandler( web_ui->AddMessageHandler(
std::make_unique<chromeos::settings::MultideviceHandler>( std::make_unique<chromeos::settings::MultideviceHandler>(
pref_service_, multidevice_setup_client_, pref_service_, multidevice_setup_client_,
phone_hub_manager_ ? phone_hub_manager_->notification_access_manager()
: nullptr,
android_sms_service_ android_sms_service_
? android_sms_service_->android_sms_pairing_state_tracker() ? android_sms_service_->android_sms_pairing_state_tracker()
: nullptr, : nullptr,
......
...@@ -21,6 +21,10 @@ namespace android_sms { ...@@ -21,6 +21,10 @@ namespace android_sms {
class AndroidSmsService; class AndroidSmsService;
} // namespace android_sms } // namespace android_sms
namespace phonehub {
class PhoneHubManager;
} // namespace phonehub
namespace settings { namespace settings {
class SearchTagRegistry; class SearchTagRegistry;
...@@ -36,6 +40,7 @@ class MultiDeviceSection ...@@ -36,6 +40,7 @@ class MultiDeviceSection
Profile* profile, Profile* profile,
SearchTagRegistry* search_tag_registry, SearchTagRegistry* search_tag_registry,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::PhoneHubManager* phone_hub_manager,
android_sms::AndroidSmsService* android_sms_service, android_sms::AndroidSmsService* android_sms_service,
PrefService* pref_service); PrefService* pref_service);
~MultiDeviceSection() override; ~MultiDeviceSection() override;
...@@ -59,6 +64,7 @@ class MultiDeviceSection ...@@ -59,6 +64,7 @@ class MultiDeviceSection
void OnNearbySharingEnabledChanged(); void OnNearbySharingEnabledChanged();
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_; multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_;
phonehub::PhoneHubManager* phone_hub_manager_;
android_sms::AndroidSmsService* android_sms_service_; android_sms::AndroidSmsService* android_sms_service_;
PrefService* pref_service_; PrefService* pref_service_;
PrefChangeRegistrar pref_change_registrar_; PrefChangeRegistrar pref_change_registrar_;
......
...@@ -22,6 +22,7 @@ OsSettingsManager::OsSettingsManager( ...@@ -22,6 +22,7 @@ OsSettingsManager::OsSettingsManager(
Profile* profile, Profile* profile,
local_search_service::LocalSearchService* local_search_service, local_search_service::LocalSearchService* local_search_service,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::PhoneHubManager* phone_hub_manager,
syncer::SyncService* sync_service, syncer::SyncService* sync_service,
SupervisedUserService* supervised_user_service, SupervisedUserService* supervised_user_service,
KerberosCredentialsManager* kerberos_credentials_manager, KerberosCredentialsManager* kerberos_credentials_manager,
...@@ -35,6 +36,7 @@ OsSettingsManager::OsSettingsManager( ...@@ -35,6 +36,7 @@ OsSettingsManager::OsSettingsManager(
std::make_unique<OsSettingsSections>(profile, std::make_unique<OsSettingsSections>(profile,
search_tag_registry_.get(), search_tag_registry_.get(),
multidevice_setup_client, multidevice_setup_client,
phone_hub_manager,
sync_service, sync_service,
supervised_user_service, supervised_user_service,
kerberos_credentials_manager, kerberos_credentials_manager,
......
...@@ -44,6 +44,10 @@ namespace multidevice_setup { ...@@ -44,6 +44,10 @@ namespace multidevice_setup {
class MultiDeviceSetupClient; class MultiDeviceSetupClient;
} // namespace multidevice_setup } // namespace multidevice_setup
namespace phonehub {
class PhoneHubManager;
} // namespace phonehub
namespace settings { namespace settings {
class Hierarchy; class Hierarchy;
...@@ -82,6 +86,7 @@ class OsSettingsManager : public KeyedService { ...@@ -82,6 +86,7 @@ class OsSettingsManager : public KeyedService {
Profile* profile, Profile* profile,
local_search_service::LocalSearchService* local_search_service, local_search_service::LocalSearchService* local_search_service,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::PhoneHubManager* phone_hub_manager,
syncer::SyncService* sync_service, syncer::SyncService* sync_service,
SupervisedUserService* supervised_user_service, SupervisedUserService* supervised_user_service,
KerberosCredentialsManager* kerberos_credentials_manager, KerberosCredentialsManager* kerberos_credentials_manager,
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h" #include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h"
#include "chrome/browser/chromeos/kerberos/kerberos_credentials_manager_factory.h" #include "chrome/browser/chromeos/kerberos/kerberos_credentials_manager_factory.h"
#include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h" #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h"
#include "chrome/browser/chromeos/phonehub/phone_hub_manager_factory.h"
#include "chrome/browser/chromeos/printing/cups_printers_manager_factory.h" #include "chrome/browser/chromeos/printing/cups_printers_manager_factory.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/incognito_helpers.h" #include "chrome/browser/profiles/incognito_helpers.h"
...@@ -40,6 +41,7 @@ OsSettingsManagerFactory::OsSettingsManagerFactory() ...@@ -40,6 +41,7 @@ OsSettingsManagerFactory::OsSettingsManagerFactory()
BrowserContextDependencyManager::GetInstance()) { BrowserContextDependencyManager::GetInstance()) {
DependsOn(local_search_service::LocalSearchServiceFactory::GetInstance()); DependsOn(local_search_service::LocalSearchServiceFactory::GetInstance());
DependsOn(multidevice_setup::MultiDeviceSetupClientFactory::GetInstance()); DependsOn(multidevice_setup::MultiDeviceSetupClientFactory::GetInstance());
DependsOn(phonehub::PhoneHubManagerFactory::GetInstance());
DependsOn(ProfileSyncServiceFactory::GetInstance()); DependsOn(ProfileSyncServiceFactory::GetInstance());
DependsOn(SupervisedUserServiceFactory::GetInstance()); DependsOn(SupervisedUserServiceFactory::GetInstance());
DependsOn(KerberosCredentialsManagerFactory::GetInstance()); DependsOn(KerberosCredentialsManagerFactory::GetInstance());
...@@ -69,6 +71,7 @@ KeyedService* OsSettingsManagerFactory::BuildServiceInstanceFor( ...@@ -69,6 +71,7 @@ KeyedService* OsSettingsManagerFactory::BuildServiceInstanceFor(
local_search_service::LocalSearchServiceFactory::GetForBrowserContext( local_search_service::LocalSearchServiceFactory::GetForBrowserContext(
context), context),
multidevice_setup::MultiDeviceSetupClientFactory::GetForProfile(profile), multidevice_setup::MultiDeviceSetupClientFactory::GetForProfile(profile),
phonehub::PhoneHubManagerFactory::GetForProfile(profile),
ProfileSyncServiceFactory::GetForProfile(profile), ProfileSyncServiceFactory::GetForProfile(profile),
SupervisedUserServiceFactory::GetForProfile(profile), SupervisedUserServiceFactory::GetForProfile(profile),
kerberos_credentials_manager, kerberos_credentials_manager,
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "chrome/browser/ui/webui/settings/chromeos/privacy_section.h" #include "chrome/browser/ui/webui/settings/chromeos/privacy_section.h"
#include "chrome/browser/ui/webui/settings/chromeos/reset_section.h" #include "chrome/browser/ui/webui/settings/chromeos/reset_section.h"
#include "chrome/browser/ui/webui/settings/chromeos/search_section.h" #include "chrome/browser/ui/webui/settings/chromeos/search_section.h"
#include "chromeos/components/phonehub/phone_hub_manager.h"
namespace chromeos { namespace chromeos {
namespace settings { namespace settings {
...@@ -32,6 +33,7 @@ OsSettingsSections::OsSettingsSections( ...@@ -32,6 +33,7 @@ OsSettingsSections::OsSettingsSections(
Profile* profile, Profile* profile,
SearchTagRegistry* search_tag_registry, SearchTagRegistry* search_tag_registry,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::PhoneHubManager* phone_hub_manager,
syncer::SyncService* sync_service, syncer::SyncService* sync_service,
SupervisedUserService* supervised_user_service, SupervisedUserService* supervised_user_service,
KerberosCredentialsManager* kerberos_credentials_manager, KerberosCredentialsManager* kerberos_credentials_manager,
...@@ -54,7 +56,7 @@ OsSettingsSections::OsSettingsSections( ...@@ -54,7 +56,7 @@ OsSettingsSections::OsSettingsSections(
sections_.push_back(std::move(bluetooth_section)); sections_.push_back(std::move(bluetooth_section));
auto multidevice_section = std::make_unique<MultiDeviceSection>( auto multidevice_section = std::make_unique<MultiDeviceSection>(
profile, search_tag_registry, multidevice_setup_client, profile, search_tag_registry, multidevice_setup_client, phone_hub_manager,
android_sms_service, profile->GetPrefs()); android_sms_service, profile->GetPrefs());
sections_map_[mojom::Section::kMultiDevice] = multidevice_section.get(); sections_map_[mojom::Section::kMultiDevice] = multidevice_section.get();
sections_.push_back(std::move(multidevice_section)); sections_.push_back(std::move(multidevice_section));
......
...@@ -36,6 +36,10 @@ namespace multidevice_setup { ...@@ -36,6 +36,10 @@ namespace multidevice_setup {
class MultiDeviceSetupClient; class MultiDeviceSetupClient;
} // namespace multidevice_setup } // namespace multidevice_setup
namespace phonehub {
class PhoneHubManager;
} // namespace phonehub
namespace settings { namespace settings {
// Collection of all OsSettingsSection implementations. // Collection of all OsSettingsSection implementations.
...@@ -45,6 +49,7 @@ class OsSettingsSections { ...@@ -45,6 +49,7 @@ class OsSettingsSections {
Profile* profile, Profile* profile,
SearchTagRegistry* search_tag_registry, SearchTagRegistry* search_tag_registry,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client, multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
phonehub::PhoneHubManager* phone_hub_manager,
syncer::SyncService* sync_service, syncer::SyncService* sync_service,
SupervisedUserService* supervised_user_service, SupervisedUserService* supervised_user_service,
KerberosCredentialsManager* kerberos_credentials_manager, KerberosCredentialsManager* kerberos_credentials_manager,
......
...@@ -100,6 +100,7 @@ ...@@ -100,6 +100,7 @@
#include "chrome/browser/chromeos/android_sms/android_sms_app_manager.h" #include "chrome/browser/chromeos/android_sms/android_sms_app_manager.h"
#include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h" #include "chrome/browser/chromeos/android_sms/android_sms_service_factory.h"
#include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h" #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h"
#include "chrome/browser/chromeos/phonehub/phone_hub_manager_factory.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/ui/webui/certificate_provisioning_ui_handler.h" #include "chrome/browser/ui/webui/certificate_provisioning_ui_handler.h"
#include "chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/account_manager_handler.h"
...@@ -109,6 +110,7 @@ ...@@ -109,6 +110,7 @@
#include "chrome/grit/browser_resources.h" #include "chrome/grit/browser_resources.h"
#include "chromeos/components/account_manager/account_manager.h" #include "chromeos/components/account_manager/account_manager.h"
#include "chromeos/components/account_manager/account_manager_factory.h" #include "chromeos/components/account_manager/account_manager_factory.h"
#include "chromeos/components/phonehub/phone_hub_manager.h"
#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_features.h"
#include "chromeos/login/auth/password_visibility_utils.h" #include "chromeos/login/auth/password_visibility_utils.h"
#include "components/arc/arc_util.h" #include "components/arc/arc_util.h"
...@@ -409,11 +411,15 @@ void SettingsUI::InitBrowserSettingsWebUIHandlers() { ...@@ -409,11 +411,15 @@ void SettingsUI::InitBrowserSettingsWebUIHandlers() {
chromeos::android_sms::AndroidSmsService* android_sms_service = chromeos::android_sms::AndroidSmsService* android_sms_service =
chromeos::android_sms::AndroidSmsServiceFactory::GetForBrowserContext( chromeos::android_sms::AndroidSmsServiceFactory::GetForBrowserContext(
profile); profile);
chromeos::phonehub::PhoneHubManager* phone_hub_manager =
chromeos::phonehub::PhoneHubManagerFactory::GetForProfile(profile);
web_ui()->AddMessageHandler( web_ui()->AddMessageHandler(
std::make_unique<chromeos::settings::MultideviceHandler>( std::make_unique<chromeos::settings::MultideviceHandler>(
profile->GetPrefs(), profile->GetPrefs(),
chromeos::multidevice_setup::MultiDeviceSetupClientFactory:: chromeos::multidevice_setup::MultiDeviceSetupClientFactory::
GetForProfile(profile), GetForProfile(profile),
phone_hub_manager ? phone_hub_manager->notification_access_manager()
: nullptr,
android_sms_service android_sms_service
? android_sms_service->android_sms_pairing_state_tracker() ? android_sms_service->android_sms_pairing_state_tracker()
: nullptr, : nullptr,
......
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