Commit 1c58828f authored by Himanshu Jaju's avatar Himanshu Jaju Committed by Commit Bot

Modularize integration tests for click to call

Bug: 982229
Change-Id: I2000e18b7e5bfe3a9ec7d9b8906251bec68d2937
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1735450
Commit-Queue: Himanshu Jaju <himanshujaju@chromium.org>
Reviewed-by: default avatarRichard Knoll <knollr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683957}
parent 3a28e366
...@@ -37,6 +37,8 @@ namespace { ...@@ -37,6 +37,8 @@ namespace {
const char kTelUrl[] = "tel:+9876543210"; const char kTelUrl[] = "tel:+9876543210";
} // namespace } // namespace
// TODO(himanshujaju): refactor out SharingBrowserTest to be reused by other
// features.
class ClickToCallBrowserTest : public SyncTest { class ClickToCallBrowserTest : public SyncTest {
public: public:
ClickToCallBrowserTest() ClickToCallBrowserTest()
...@@ -65,6 +67,9 @@ class ClickToCallBrowserTest : public SyncTest { ...@@ -65,6 +67,9 @@ class ClickToCallBrowserTest : public SyncTest {
gcm_service_ = static_cast<gcm::FakeGCMProfileService*>( gcm_service_ = static_cast<gcm::FakeGCMProfileService*>(
gcm::GCMProfileServiceFactory::GetForProfile(GetProfile(0))); gcm::GCMProfileServiceFactory::GetForProfile(GetProfile(0)));
gcm_service_->set_collect(true); gcm_service_->set_collect(true);
sharing_service_ =
SharingServiceFactory::GetForBrowserContext(GetProfile(0));
} }
void SetUpDevices(int count) { void SetUpDevices(int count) {
...@@ -130,16 +135,26 @@ class ClickToCallBrowserTest : public SyncTest { ...@@ -130,16 +135,26 @@ class ClickToCallBrowserTest : public SyncTest {
return menu; return menu;
} }
void GetDeviceFCMToken(SharingService* sharing_service, void GetDeviceFCMToken(const std::string& guid,
const std::string& guid,
std::string* fcm_token) const { std::string* fcm_token) const {
auto devices = sharing_service->GetSyncPreferences()->GetSyncedDevices(); auto devices = sharing_service_->GetSyncPreferences()->GetSyncedDevices();
auto it = devices.find(guid); auto it = devices.find(guid);
ASSERT_NE(devices.end(), it); ASSERT_NE(devices.end(), it);
*fcm_token = it->second.fcm_token; *fcm_token = it->second.fcm_token;
} }
gcm::FakeGCMProfileService* GetGCMService() const { return gcm_service_; } void CheckLastSharingMessageSent(const std::string& fcm_token,
const GURL& url) const {
EXPECT_EQ(fcm_token, gcm_service_->last_receiver_id());
chrome_browser_sharing::SharingMessage sharing_message;
sharing_message.ParseFromString(
gcm_service_->last_web_push_message().payload);
ASSERT_TRUE(sharing_message.has_click_to_call_message());
EXPECT_EQ(url.GetContent(),
sharing_message.click_to_call_message().phone_number());
}
SharingService* sharing_service() const { return sharing_service_; }
private: private:
gcm::GCMProfileServiceFactory::ScopedTestingFactoryInstaller gcm::GCMProfileServiceFactory::ScopedTestingFactoryInstaller
...@@ -149,17 +164,16 @@ class ClickToCallBrowserTest : public SyncTest { ...@@ -149,17 +164,16 @@ class ClickToCallBrowserTest : public SyncTest {
content::WebContents* web_contents_; content::WebContents* web_contents_;
syncer::FakeDeviceInfoTracker fake_device_info_tracker_; syncer::FakeDeviceInfoTracker fake_device_info_tracker_;
std::vector<std::unique_ptr<syncer::DeviceInfo>> device_infos_; std::vector<std::unique_ptr<syncer::DeviceInfo>> device_infos_;
SharingService* sharing_service_;
DISALLOW_COPY_AND_ASSIGN(ClickToCallBrowserTest); DISALLOW_COPY_AND_ASSIGN(ClickToCallBrowserTest);
}; };
// TODO(himanshujaju): Add UI checks. Modularize common functions. // TODO(himanshujaju): Add UI checks.
IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest,
ContextMenu_SingleDeviceAvailable) { ContextMenu_SingleDeviceAvailable) {
SetUpDevices(/*count=*/1); SetUpDevices(/*count=*/1);
SharingService* sharing_service = auto devices = sharing_service()->GetDeviceCandidates(
SharingServiceFactory::GetForBrowserContext(GetProfile(0));
auto devices = sharing_service->GetDeviceCandidates(
static_cast<int>(SharingDeviceCapability::kTelephony)); static_cast<int>(SharingDeviceCapability::kTelephony));
ASSERT_EQ(1u, devices.size()); ASSERT_EQ(1u, devices.size());
...@@ -173,19 +187,12 @@ IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ...@@ -173,19 +187,12 @@ IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest,
EXPECT_FALSE(menu->IsItemPresent( EXPECT_FALSE(menu->IsItemPresent(
IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES)); IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES));
// Check fcm token and message sent.
menu->ExecuteCommand(IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE, menu->ExecuteCommand(IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_SINGLE_DEVICE,
0); 0);
// Check SharingMessage and Receiver id
std::string fcm_token; std::string fcm_token;
GetDeviceFCMToken(sharing_service, devices[0].guid(), &fcm_token); GetDeviceFCMToken(devices[0].guid(), &fcm_token);
EXPECT_EQ(fcm_token, GetGCMService()->last_receiver_id()); CheckLastSharingMessageSent(fcm_token, GURL(kTelUrl));
chrome_browser_sharing::SharingMessage sharing_message;
sharing_message.ParseFromString(
GetGCMService()->last_web_push_message().payload);
ASSERT_TRUE(sharing_message.has_click_to_call_message());
EXPECT_EQ(GURL(kTelUrl).GetContent(),
sharing_message.click_to_call_message().phone_number());
} }
IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ContextMenu_NoDevicesAvailable) { IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ContextMenu_NoDevicesAvailable) {
...@@ -216,9 +223,7 @@ IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ...@@ -216,9 +223,7 @@ IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest,
ContextMenu_MultipleDevicesAvailable) { ContextMenu_MultipleDevicesAvailable) {
SetUpDevices(/*count=*/2); SetUpDevices(/*count=*/2);
SharingService* sharing_service = auto devices = sharing_service()->GetDeviceCandidates(
SharingServiceFactory::GetForBrowserContext(GetProfile(0));
auto devices = sharing_service->GetDeviceCandidates(
static_cast<int>(SharingDeviceCapability::kTelephony)); static_cast<int>(SharingDeviceCapability::kTelephony));
ASSERT_EQ(2u, devices.size()); ASSERT_EQ(2u, devices.size());
...@@ -237,22 +242,14 @@ IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest, ...@@ -237,22 +242,14 @@ IN_PROC_BROWSER_TEST_F(ClickToCallBrowserTest,
EXPECT_EQ(2, sub_menu_model->GetItemCount()); EXPECT_EQ(2, sub_menu_model->GetItemCount());
EXPECT_EQ(0, device_id); EXPECT_EQ(0, device_id);
// Todo(himanshujaju): Modularize the checks for gcm message
for (auto& device : devices) { for (auto& device : devices) {
EXPECT_EQ(kSubMenuFirstDeviceCommandId + device_id, EXPECT_EQ(kSubMenuFirstDeviceCommandId + device_id,
sub_menu_model->GetCommandIdAt(device_id)); sub_menu_model->GetCommandIdAt(device_id));
sub_menu_model->ActivatedAt(device_id); sub_menu_model->ActivatedAt(device_id);
std::string fcm_token; std::string fcm_token;
GetDeviceFCMToken(sharing_service, device.guid(), &fcm_token); GetDeviceFCMToken(device.guid(), &fcm_token);
EXPECT_EQ(fcm_token, GetGCMService()->last_receiver_id()); CheckLastSharingMessageSent(fcm_token, GURL(kTelUrl));
chrome_browser_sharing::SharingMessage sharing_message;
sharing_message.ParseFromString(
GetGCMService()->last_web_push_message().payload);
ASSERT_TRUE(sharing_message.has_click_to_call_message());
EXPECT_EQ(GURL(kTelUrl).GetContent(),
sharing_message.click_to_call_message().phone_number());
device_id++; device_id++;
} }
} }
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