Commit 6d6b6173 authored by Jeremy Klein's avatar Jeremy Klein Committed by Jeremy Klein

Add the ability for AndroidSmsAppHelperDelegate to launch the PWA.

Also actually use this ability when the "Set Up" button in multidevice
settings is clicked.

R=khorimoto@chromium.org

Bug: 870093
Change-Id: I3dd5bcd9c8e3946e1ae42a5db69f2bb7ed3ea586
Reviewed-on: https://chromium-review.googlesource.com/1185498
Commit-Queue: Jeremy Klein <jlklein@chromium.org>
Reviewed-by: default avatarTommy Li <tommycli@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589196}
parent 745395c5
...@@ -9,10 +9,15 @@ ...@@ -9,10 +9,15 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/callback.h"
#include "chrome/browser/chromeos/android_sms/android_sms_urls.h" #include "chrome/browser/chromeos/android_sms/android_sms_urls.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/extensions/app_launch_params.h"
#include "chrome/browser/ui/extensions/application_launch.h"
#include "chrome/browser/web_applications/components/pending_app_manager.h" #include "chrome/browser/web_applications/components/pending_app_manager.h"
#include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/browser/web_applications/web_app_provider.h"
#include "chromeos/components/proximity_auth/logging/logging.h" #include "chromeos/components/proximity_auth/logging/logging.h"
#include "extensions/common/constants.h"
#include "ui/base/window_open_disposition.h"
namespace chromeos { namespace chromeos {
...@@ -22,6 +27,7 @@ AndroidSmsAppHelperDelegateImpl::AndroidSmsAppHelperDelegateImpl( ...@@ -22,6 +27,7 @@ AndroidSmsAppHelperDelegateImpl::AndroidSmsAppHelperDelegateImpl(
Profile* profile) Profile* profile)
: pending_app_manager_( : pending_app_manager_(
&web_app::WebAppProvider::Get(profile)->pending_app_manager()), &web_app::WebAppProvider::Get(profile)->pending_app_manager()),
profile_(profile),
weak_ptr_factory_(this) {} weak_ptr_factory_(this) {}
AndroidSmsAppHelperDelegateImpl::AndroidSmsAppHelperDelegateImpl( AndroidSmsAppHelperDelegateImpl::AndroidSmsAppHelperDelegateImpl(
...@@ -42,6 +48,24 @@ void AndroidSmsAppHelperDelegateImpl::InstallAndroidSmsApp() { ...@@ -42,6 +48,24 @@ void AndroidSmsAppHelperDelegateImpl::InstallAndroidSmsApp() {
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
bool AndroidSmsAppHelperDelegateImpl::LaunchAndroidSmsApp() {
const extensions::Extension* android_sms_pwa =
extensions::util::GetInstalledPwaForUrl(
profile_, chromeos::android_sms::GetAndroidMessagesURL());
if (!android_sms_pwa) {
PA_LOG(ERROR) << "No Messages app found.";
return false;
}
PA_LOG(INFO) << "Messages app Launching...";
AppLaunchParams params(
profile_, android_sms_pwa, extensions::LAUNCH_CONTAINER_WINDOW,
WindowOpenDisposition::NEW_WINDOW, extensions::SOURCE_CHROME_INTERNAL);
// OpenApplications() is defined in application_launch.h.
OpenApplication(params);
return true;
}
void AndroidSmsAppHelperDelegateImpl::OnAppInstalled( void AndroidSmsAppHelperDelegateImpl::OnAppInstalled(
const GURL& app_url, const GURL& app_url,
const base::Optional<std::string>& app_id) { const base::Optional<std::string>& app_id) {
......
...@@ -30,6 +30,10 @@ class AndroidSmsAppHelperDelegateImpl : public AndroidSmsAppHelperDelegate { ...@@ -30,6 +30,10 @@ class AndroidSmsAppHelperDelegateImpl : public AndroidSmsAppHelperDelegate {
private: private:
friend class AndroidSmsAppHelperDelegateImplTest; friend class AndroidSmsAppHelperDelegateImplTest;
// Note: This constructor should only be used in testing. Right now, objects
// built using this constructor will segfault on profile_ if
// LaunchAndroidSmsApp is called. We'll need to fix this once tests for that
// function are added. See https://crbug.com/876972.
explicit AndroidSmsAppHelperDelegateImpl( explicit AndroidSmsAppHelperDelegateImpl(
web_app::PendingAppManager* pending_app_manager); web_app::PendingAppManager* pending_app_manager);
void OnAppInstalled(const GURL& app_url, void OnAppInstalled(const GURL& app_url,
...@@ -37,9 +41,11 @@ class AndroidSmsAppHelperDelegateImpl : public AndroidSmsAppHelperDelegate { ...@@ -37,9 +41,11 @@ class AndroidSmsAppHelperDelegateImpl : public AndroidSmsAppHelperDelegate {
// AndroidSmsAppHelperDelegate: // AndroidSmsAppHelperDelegate:
void InstallAndroidSmsApp() override; void InstallAndroidSmsApp() override;
bool LaunchAndroidSmsApp() override;
static const char kMessagesWebAppUrl[]; static const char kMessagesWebAppUrl[];
web_app::PendingAppManager* pending_app_manager_; web_app::PendingAppManager* pending_app_manager_;
Profile* profile_;
base::WeakPtrFactory<AndroidSmsAppHelperDelegateImpl> weak_ptr_factory_; base::WeakPtrFactory<AndroidSmsAppHelperDelegateImpl> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(AndroidSmsAppHelperDelegateImpl); DISALLOW_COPY_AND_ASSIGN(AndroidSmsAppHelperDelegateImpl);
......
...@@ -24,6 +24,12 @@ cr.define('settings', function() { ...@@ -24,6 +24,12 @@ cr.define('settings', function() {
removeHostDevice() {} removeHostDevice() {}
retryPendingHostSetup() {} retryPendingHostSetup() {}
/**
* Called when the "Set Up" button is clicked to open the Android Messages
* PWA.
*/
setUpAndroidSms() {}
} }
/** /**
...@@ -55,6 +61,11 @@ cr.define('settings', function() { ...@@ -55,6 +61,11 @@ cr.define('settings', function() {
retryPendingHostSetup() { retryPendingHostSetup() {
chrome.send('retryPendingHostSetup'); chrome.send('retryPendingHostSetup');
} }
/** @override */
setUpAndroidSms() {
chrome.send('setUpAndroidSms');
}
} }
cr.addSingletonGetter(MultiDeviceBrowserProxyImpl); cr.addSingletonGetter(MultiDeviceBrowserProxyImpl);
......
...@@ -56,9 +56,17 @@ Polymer({ ...@@ -56,9 +56,17 @@ Polymer({
}, },
}, },
/** @private {?settings.MultiDeviceBrowserProxy} */
browserProxy_: null,
/** @override */
created: function() {
this.browserProxy_ = settings.MultiDeviceBrowserProxyImpl.getInstance();
},
/** @private */ /** @private */
handleAndroidMessagesButtonClick_: function() { handleAndroidMessagesButtonClick_: function() {
this.androidMessagesRequiresSetup_ = false; this.browserProxy_.setUpAndroidSms();
}, },
listeners: { listeners: {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/logging.h" #include "base/logging.h"
#include "chrome/browser/chromeos/multidevice_setup/android_sms_app_helper_delegate_impl.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/proximity_auth/logging/logging.h" #include "chromeos/components/proximity_auth/logging/logging.h"
#include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui.h"
...@@ -35,8 +36,11 @@ void OnRetrySetHostNowResult(bool success) { ...@@ -35,8 +36,11 @@ void OnRetrySetHostNowResult(bool success) {
} // namespace } // namespace
MultideviceHandler::MultideviceHandler( MultideviceHandler::MultideviceHandler(
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client) multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
std::unique_ptr<multidevice_setup::AndroidSmsAppHelperDelegate>
android_sms_app_helper)
: multidevice_setup_client_(multidevice_setup_client), : multidevice_setup_client_(multidevice_setup_client),
android_sms_app_helper_(std::move(android_sms_app_helper)),
multidevice_setup_observer_(this), multidevice_setup_observer_(this),
callback_weak_ptr_factory_(this) {} callback_weak_ptr_factory_(this) {}
...@@ -63,6 +67,10 @@ void MultideviceHandler::RegisterMessages() { ...@@ -63,6 +67,10 @@ void MultideviceHandler::RegisterMessages() {
"retryPendingHostSetup", "retryPendingHostSetup",
base::BindRepeating(&MultideviceHandler::HandleRetryPendingHostSetup, base::BindRepeating(&MultideviceHandler::HandleRetryPendingHostSetup,
base::Unretained(this))); base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"setUpAndroidSms",
base::BindRepeating(&MultideviceHandler::HandleSetUpAndroidSms,
base::Unretained(this)));
} }
void MultideviceHandler::OnJavascriptAllowed() { void MultideviceHandler::OnJavascriptAllowed() {
...@@ -158,6 +166,12 @@ void MultideviceHandler::HandleRetryPendingHostSetup( ...@@ -158,6 +166,12 @@ void MultideviceHandler::HandleRetryPendingHostSetup(
base::BindOnce(&OnRetrySetHostNowResult)); base::BindOnce(&OnRetrySetHostNowResult));
} }
void MultideviceHandler::HandleSetUpAndroidSms(const base::ListValue* args) {
PA_LOG(WARNING) << "HandlingSetupSms";
DCHECK(args->empty());
android_sms_app_helper_->LaunchAndroidSmsApp();
}
void MultideviceHandler::OnSetFeatureStateEnabledResult( void MultideviceHandler::OnSetFeatureStateEnabledResult(
const std::string& js_callback_id, const std::string& js_callback_id,
bool success) { bool success) {
......
...@@ -15,6 +15,10 @@ ...@@ -15,6 +15,10 @@
namespace chromeos { namespace chromeos {
namespace multidevice_setup {
class AndroidSmsAppHelperDelegate;
} // namespace multidevice_setup
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.
...@@ -23,7 +27,9 @@ class MultideviceHandler ...@@ -23,7 +27,9 @@ class MultideviceHandler
public multidevice_setup::MultiDeviceSetupClient::Observer { public multidevice_setup::MultiDeviceSetupClient::Observer {
public: public:
explicit MultideviceHandler( explicit MultideviceHandler(
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client); multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
std::unique_ptr<multidevice_setup::AndroidSmsAppHelperDelegate>
android_sms_app_helper);
~MultideviceHandler() override; ~MultideviceHandler() override;
protected: protected:
...@@ -52,6 +58,7 @@ class MultideviceHandler ...@@ -52,6 +58,7 @@ class MultideviceHandler
void HandleSetFeatureEnabledState(const base::ListValue* args); void HandleSetFeatureEnabledState(const base::ListValue* args);
void HandleRemoveHostDevice(const base::ListValue* args); void HandleRemoveHostDevice(const base::ListValue* args);
void HandleRetryPendingHostSetup(const base::ListValue* args); void HandleRetryPendingHostSetup(const base::ListValue* args);
void HandleSetUpAndroidSms(const base::ListValue* args);
void OnSetFeatureStateEnabledResult(const std::string& js_callback_id, void OnSetFeatureStateEnabledResult(const std::string& js_callback_id,
bool success); bool success);
...@@ -62,6 +69,8 @@ class MultideviceHandler ...@@ -62,6 +69,8 @@ class MultideviceHandler
std::unique_ptr<base::DictionaryValue> GeneratePageContentDataDictionary(); std::unique_ptr<base::DictionaryValue> GeneratePageContentDataDictionary();
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_; multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client_;
std::unique_ptr<multidevice_setup::AndroidSmsAppHelperDelegate>
android_sms_app_helper_;
ScopedObserver<multidevice_setup::MultiDeviceSetupClient, ScopedObserver<multidevice_setup::MultiDeviceSetupClient,
multidevice_setup::MultiDeviceSetupClient::Observer> multidevice_setup::MultiDeviceSetupClient::Observer>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <memory> #include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "chromeos/services/multidevice_setup/public/cpp/fake_android_sms_app_helper_delegate.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/cryptauth/remote_device_test_util.h" #include "components/cryptauth/remote_device_test_util.h"
#include "content/public/test/test_web_ui.h" #include "content/public/test/test_web_ui.h"
...@@ -21,8 +22,11 @@ namespace { ...@@ -21,8 +22,11 @@ namespace {
class TestMultideviceHandler : public MultideviceHandler { class TestMultideviceHandler : public MultideviceHandler {
public: public:
TestMultideviceHandler( TestMultideviceHandler(
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client) multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
: MultideviceHandler(multidevice_setup_client) {} std::unique_ptr<multidevice_setup::AndroidSmsAppHelperDelegate>
android_sms_app_helper)
: MultideviceHandler(multidevice_setup_client,
std::move(android_sms_app_helper)) {}
~TestMultideviceHandler() override = default; ~TestMultideviceHandler() override = default;
// Make public for testing. // Make public for testing.
...@@ -107,9 +111,14 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -107,9 +111,14 @@ 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>();
auto fake_android_sms_app_helper_delegate =
std::make_unique<multidevice_setup::FakeAndroidSmsAppHelperDelegate>();
fake_android_sms_app_helper_delegate_ =
fake_android_sms_app_helper_delegate.get();
handler_ = std::make_unique<TestMultideviceHandler>( handler_ = std::make_unique<TestMultideviceHandler>(
fake_multidevice_setup_client_.get()); fake_multidevice_setup_client_.get(),
std::move(fake_android_sms_app_helper_delegate));
handler_->set_web_ui(test_web_ui_.get()); handler_->set_web_ui(test_web_ui_.get());
handler_->RegisterMessages(); handler_->RegisterMessages();
handler_->AllowJavascript(); handler_->AllowJavascript();
...@@ -184,6 +193,11 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -184,6 +193,11 @@ class MultideviceHandlerTest : public testing::Test {
success); success);
} }
void CallSetUpAndroidSms() {
base::ListValue empty_args;
test_web_ui()->HandleReceivedMessage("setUpAndroidSms", &empty_args);
}
void CallSetFeatureEnabledState(multidevice_setup::mojom::Feature feature, void CallSetFeatureEnabledState(multidevice_setup::mojom::Feature feature,
bool enabled, bool enabled,
const base::Optional<std::string>& auth_token, const base::Optional<std::string>& auth_token,
...@@ -225,6 +239,11 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -225,6 +239,11 @@ class MultideviceHandlerTest : public testing::Test {
return fake_multidevice_setup_client_.get(); return fake_multidevice_setup_client_.get();
} }
multidevice_setup::FakeAndroidSmsAppHelperDelegate*
fake_android_sms_app_helper_delegate() {
return fake_android_sms_app_helper_delegate_;
}
const cryptauth::RemoteDeviceRef test_device_; const cryptauth::RemoteDeviceRef test_device_;
private: private:
...@@ -244,6 +263,8 @@ class MultideviceHandlerTest : public testing::Test { ...@@ -244,6 +263,8 @@ class MultideviceHandlerTest : public testing::Test {
host_status_with_device_; host_status_with_device_;
multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap
feature_states_map_; feature_states_map_;
multidevice_setup::FakeAndroidSmsAppHelperDelegate*
fake_android_sms_app_helper_delegate_;
DISALLOW_COPY_AND_ASSIGN(MultideviceHandlerTest); DISALLOW_COPY_AND_ASSIGN(MultideviceHandlerTest);
}; };
...@@ -280,6 +301,12 @@ TEST_F(MultideviceHandlerTest, RetryPendingHostSetup) { ...@@ -280,6 +301,12 @@ TEST_F(MultideviceHandlerTest, RetryPendingHostSetup) {
CallRetryPendingHostSetup(false /* success */); CallRetryPendingHostSetup(false /* success */);
} }
TEST_F(MultideviceHandlerTest, SetUpAndroidSms) {
EXPECT_FALSE(fake_android_sms_app_helper_delegate()->HasLaunchedApp());
CallSetUpAndroidSms();
EXPECT_TRUE(fake_android_sms_app_helper_delegate()->HasLaunchedApp());
}
TEST_F(MultideviceHandlerTest, SetFeatureEnabledState) { TEST_F(MultideviceHandlerTest, SetFeatureEnabledState) {
CallSetFeatureEnabledState( CallSetFeatureEnabledState(
multidevice_setup::mojom::Feature::kBetterTogetherSuite, multidevice_setup::mojom::Feature::kBetterTogetherSuite,
......
...@@ -77,6 +77,7 @@ ...@@ -77,6 +77,7 @@
#include "chrome/browser/chromeos/crostini/crostini_util.h" #include "chrome/browser/chromeos/crostini/crostini_util.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h" #include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
#include "chrome/browser/chromeos/multidevice_setup/android_sms_app_helper_delegate_impl.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/signin/account_tracker_service_factory.h" #include "chrome/browser/signin/account_tracker_service_factory.h"
#include "chrome/browser/ui/webui/settings/chromeos/accessibility_handler.h" #include "chrome/browser/ui/webui/settings/chromeos/accessibility_handler.h"
...@@ -226,7 +227,10 @@ MdSettingsUI::MdSettingsUI(content::WebUI* web_ui) ...@@ -226,7 +227,10 @@ MdSettingsUI::MdSettingsUI(content::WebUI* web_ui)
AddSettingsPageUIHandler( AddSettingsPageUIHandler(
std::make_unique<chromeos::settings::MultideviceHandler>( std::make_unique<chromeos::settings::MultideviceHandler>(
chromeos::multidevice_setup::MultiDeviceSetupClientFactory:: chromeos::multidevice_setup::MultiDeviceSetupClientFactory::
GetForProfile(profile))); GetForProfile(profile),
std::make_unique<
chromeos::multidevice_setup::AndroidSmsAppHelperDelegateImpl>(
profile)));
} }
AddSettingsPageUIHandler( AddSettingsPageUIHandler(
std::make_unique<chromeos::settings::PointerHandler>()); std::make_unique<chromeos::settings::PointerHandler>());
......
...@@ -1992,6 +1992,7 @@ CrSettingsMultideviceSubpageTest.prototype = { ...@@ -1992,6 +1992,7 @@ CrSettingsMultideviceSubpageTest.prototype = {
/** @override */ /** @override */
extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([ extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([
'../test_browser_proxy.js',
'multidevice_subpage_tests.js', 'multidevice_subpage_tests.js',
]), ]),
}; };
......
...@@ -2,8 +2,25 @@ ...@@ -2,8 +2,25 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
/**
* @implements {settings.MultideviceBrowserProxy}
*/
class TestMultideviceBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'setUpAndroidSms',
]);
}
/** @override */
setUpAndroidSms() {
this.methodCalled('setUpAndroidSms');
}
}
suite('Multidevice', function() { suite('Multidevice', function() {
let multideviceSubpage = null; let multideviceSubpage = null;
let browserProxy = null;
// Although HOST_SET_MODES is effectively a constant, it cannot reference the // Although HOST_SET_MODES is effectively a constant, it cannot reference the
// enum settings.MultiDeviceSettingsMode from here so its initialization is // enum settings.MultiDeviceSettingsMode from here so its initialization is
// deferred to the suiteSetup function. // deferred to the suiteSetup function.
...@@ -60,6 +77,10 @@ suite('Multidevice', function() { ...@@ -60,6 +77,10 @@ suite('Multidevice', function() {
}); });
setup(function() { setup(function() {
browserProxy = new TestMultideviceBrowserProxy();
settings.MultiDeviceBrowserProxyImpl.instance_ = browserProxy;
PolymerTest.clearBody();
multideviceSubpage = document.createElement('settings-multidevice-subpage'); multideviceSubpage = document.createElement('settings-multidevice-subpage');
multideviceSubpage.pageContentData = {hostDeviceName: 'Pixel XL'}; multideviceSubpage.pageContentData = {hostDeviceName: 'Pixel XL'};
setMode(settings.MultiDeviceSettingsMode.HOST_SET_VERIFIED); setMode(settings.MultiDeviceSettingsMode.HOST_SET_VERIFIED);
...@@ -133,4 +154,20 @@ suite('Multidevice', function() { ...@@ -133,4 +154,20 @@ suite('Multidevice', function() {
assertFalse(!!multideviceSubpage.$$(controllerSelector)); assertFalse(!!multideviceSubpage.$$(controllerSelector));
}); });
test(
'AndroidMessages set up button calls browser proxy function', function() {
const messagesItem = multideviceSubpage.$$('#messagesItem');
multideviceSubpage.androidMessagesRequiresSetup_ = true;
Polymer.dom.flush();
const setUpButton =
multideviceSubpage.$$('#messagesItem > [slot=feature-controller]');
assertTrue(!!setUpButton);
setUpButton.click();
return browserProxy.whenCalled('setUpAndroidSms');
});
}); });
...@@ -17,6 +17,9 @@ class AndroidSmsAppHelperDelegate { ...@@ -17,6 +17,9 @@ class AndroidSmsAppHelperDelegate {
// Installs the Messages for Web PWA. Handles retries and errors internally. // Installs the Messages for Web PWA. Handles retries and errors internally.
virtual void InstallAndroidSmsApp() = 0; virtual void InstallAndroidSmsApp() = 0;
// Launches the Messages for Web PWA if it's installed. Returns true if the
// app was launched successfully, false otherwise.
virtual bool LaunchAndroidSmsApp() = 0;
protected: protected:
AndroidSmsAppHelperDelegate() = default; AndroidSmsAppHelperDelegate() = default;
......
...@@ -23,6 +23,15 @@ bool FakeAndroidSmsAppHelperDelegate::HasInstalledApp() { ...@@ -23,6 +23,15 @@ bool FakeAndroidSmsAppHelperDelegate::HasInstalledApp() {
return has_installed_; return has_installed_;
} }
bool FakeAndroidSmsAppHelperDelegate::LaunchAndroidSmsApp() {
has_launched_ = true;
return true;
}
bool FakeAndroidSmsAppHelperDelegate::HasLaunchedApp() {
return has_launched_;
}
} // namespace multidevice_setup } // namespace multidevice_setup
} // namespace chromeos } // namespace chromeos
...@@ -16,12 +16,15 @@ class FakeAndroidSmsAppHelperDelegate : public AndroidSmsAppHelperDelegate { ...@@ -16,12 +16,15 @@ class FakeAndroidSmsAppHelperDelegate : public AndroidSmsAppHelperDelegate {
FakeAndroidSmsAppHelperDelegate(); FakeAndroidSmsAppHelperDelegate();
~FakeAndroidSmsAppHelperDelegate() override; ~FakeAndroidSmsAppHelperDelegate() override;
bool HasInstalledApp(); bool HasInstalledApp();
bool HasLaunchedApp();
// AndroidSmsAppHelperDelegate: // AndroidSmsAppHelperDelegate:
void InstallAndroidSmsApp() override; void InstallAndroidSmsApp() override;
bool LaunchAndroidSmsApp() override;
private: private:
bool has_installed_ = false; bool has_installed_ = false;
bool has_launched_ = false;
DISALLOW_COPY_AND_ASSIGN(FakeAndroidSmsAppHelperDelegate); DISALLOW_COPY_AND_ASSIGN(FakeAndroidSmsAppHelperDelegate);
}; };
......
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