Commit 86ea57b3 authored by Olesia Marukhno's avatar Olesia Marukhno Committed by Commit Bot

Clean up permission request manager unit tests

Delete duplicated manager unit tests

Change-Id: If4b400dc6a3262363cd68f0d92b7efdffcd21438
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2550816
Commit-Queue: Olesia Marukhno <olesiamarukhno@google.com>
Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830597}
parent 544ce146
...@@ -144,6 +144,15 @@ class PermissionRequestManagerTest ...@@ -144,6 +144,15 @@ class PermissionRequestManagerTest
base::test::ScopedFeatureList feature_list_; base::test::ScopedFeatureList feature_list_;
}; };
////////////////////////////////////////////////////////////////////////////////
// General
////////////////////////////////////////////////////////////////////////////////
TEST_P(PermissionRequestManagerTest, NoRequests) {
WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
}
TEST_P(PermissionRequestManagerTest, SingleRequest) { TEST_P(PermissionRequestManagerTest, SingleRequest) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown(); WaitForBubbleToBeShown();
...@@ -155,17 +164,70 @@ TEST_P(PermissionRequestManagerTest, SingleRequest) { ...@@ -155,17 +164,70 @@ TEST_P(PermissionRequestManagerTest, SingleRequest) {
EXPECT_TRUE(request1_.granted()); EXPECT_TRUE(request1_.granted());
} }
TEST_P(PermissionRequestManagerTest, SingleRequestViewFirst) { TEST_P(PermissionRequestManagerTest, SequentialRequests) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown(); WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Accept();
EXPECT_TRUE(request1_.granted());
EXPECT_FALSE(prompt_factory_->is_visible());
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Accept();
EXPECT_FALSE(prompt_factory_->is_visible());
EXPECT_TRUE(request2_.granted());
}
TEST_P(PermissionRequestManagerTest, ForgetRequestsOnPageNavigation) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
manager_->AddRequest(web_contents()->GetMainFrame(),
&iframe_request_other_domain_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible()); EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1); ASSERT_EQ(prompt_factory_->request_count(), 1);
NavigateAndCommit(GURL("http://www2.google.com/"));
WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
EXPECT_TRUE(request1_.finished());
EXPECT_TRUE(request2_.finished());
EXPECT_TRUE(iframe_request_other_domain_.finished());
}
TEST_P(PermissionRequestManagerTest, RequestsDontNeedUserGesture) {
WaitForFrameLoad();
WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(),
&iframe_request_other_domain_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(prompt_factory_->is_visible());
}
TEST_P(PermissionRequestManagerTest, RequestsNotSupported) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown();
Accept(); Accept();
EXPECT_TRUE(request1_.granted()); EXPECT_TRUE(request1_.granted());
manager_->set_web_contents_supports_permission_requests(false);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
EXPECT_TRUE(request2_.cancelled());
} }
////////////////////////////////////////////////////////////////////////////////
// Requests grouping
////////////////////////////////////////////////////////////////////////////////
// Most requests should never be grouped. // Most requests should never be grouped.
TEST_P(PermissionRequestManagerTest, TwoRequestsUngrouped) { TEST_P(PermissionRequestManagerTest, TwoRequestsUngrouped) {
// Grouping for chip feature is tested in ThreeRequestsStackOrderChip. // Grouping for chip feature is tested in ThreeRequestsStackOrderChip.
...@@ -186,6 +248,74 @@ TEST_P(PermissionRequestManagerTest, TwoRequestsUngrouped) { ...@@ -186,6 +248,74 @@ TEST_P(PermissionRequestManagerTest, TwoRequestsUngrouped) {
ASSERT_EQ(prompt_factory_->request_count(), 1); ASSERT_EQ(prompt_factory_->request_count(), 1);
Accept(); Accept();
EXPECT_TRUE(request2_.granted()); EXPECT_TRUE(request2_.granted());
ASSERT_EQ(prompt_factory_->show_count(), 2);
}
TEST_P(PermissionRequestManagerTest, ThreeRequestsStackOrderChip) {
if (!GetParam())
return;
// Test new permissions order, requests shouldn't be grouped.
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request_mic_.granted());
EXPECT_FALSE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request1_.granted());
}
// Test new permissions order by adding requests one at a time.
TEST_P(PermissionRequestManagerTest, ThreeRequestsOneByOneStackOrderChip) {
if (!GetParam())
return;
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request_mic_.granted());
EXPECT_FALSE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request1_.granted());
} }
// Only mic/camera requests from the same origin should be grouped. // Only mic/camera requests from the same origin should be grouped.
...@@ -267,6 +397,30 @@ TEST_P(PermissionRequestManagerTest, MicCameraPtzGrouped) { ...@@ -267,6 +397,30 @@ TEST_P(PermissionRequestManagerTest, MicCameraPtzGrouped) {
ASSERT_LT(prompt_factory_->request_count(), 3); ASSERT_LT(prompt_factory_->request_count(), 3);
} }
// Tests mix of grouped media requests and non-groupable request.
TEST_P(PermissionRequestManagerTest, MixOfMediaAndNotMediaRequests) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_camera_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
WaitForBubbleToBeShown();
// Requests should be split into two groups and each one will contain less
// than 3 requests (1 request + 2 request for current logic and 2 requests + 1
// request for chip).
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_LT(prompt_factory_->request_count(), 3);
Accept();
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_LT(prompt_factory_->request_count(), 3);
Accept();
}
////////////////////////////////////////////////////////////////////////////////
// Tab switching
////////////////////////////////////////////////////////////////////////////////
TEST_P(PermissionRequestManagerTest, TwoRequestsTabSwitch) { TEST_P(PermissionRequestManagerTest, TwoRequestsTabSwitch) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_); manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_camera_); manager_->AddRequest(web_contents()->GetMainFrame(), &request_camera_);
...@@ -319,11 +473,6 @@ TEST_P(PermissionRequestManagerTest, ThreeRequestsTabSwitch) { ...@@ -319,11 +473,6 @@ TEST_P(PermissionRequestManagerTest, ThreeRequestsTabSwitch) {
EXPECT_TRUE(request_ptz_.granted()); EXPECT_TRUE(request_ptz_.granted());
} }
TEST_P(PermissionRequestManagerTest, NoRequests) {
WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
}
TEST_P(PermissionRequestManagerTest, PermissionRequestWhileTabSwitchedAway) { TEST_P(PermissionRequestManagerTest, PermissionRequestWhileTabSwitchedAway) {
MockTabSwitchAway(); MockTabSwitchAway();
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
...@@ -335,69 +484,25 @@ TEST_P(PermissionRequestManagerTest, PermissionRequestWhileTabSwitchedAway) { ...@@ -335,69 +484,25 @@ TEST_P(PermissionRequestManagerTest, PermissionRequestWhileTabSwitchedAway) {
EXPECT_TRUE(prompt_factory_->is_visible()); EXPECT_TRUE(prompt_factory_->is_visible());
} }
TEST_P(PermissionRequestManagerTest, TwoRequestsDoNotCoalesce) { ////////////////////////////////////////////////////////////////////////////////
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); // Duplicated requests
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_); ////////////////////////////////////////////////////////////////////////////////
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
}
TEST_P(PermissionRequestManagerTest, TwoRequestsShownInTwoBubbles) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
Accept();
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible()); TEST_P(PermissionRequestManagerTest, SameRequestRejected) {
ASSERT_EQ(prompt_factory_->request_count(), 1);
ASSERT_EQ(prompt_factory_->show_count(), 2);
}
TEST_P(PermissionRequestManagerTest, TestAddDuplicateRequest) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
EXPECT_FALSE(request1_.finished());
WaitForBubbleToBeShown(); WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible()); EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1); ASSERT_EQ(prompt_factory_->request_count(), 1);
}
TEST_P(PermissionRequestManagerTest, SequentialRequests) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Accept(); Accept();
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(request1_.granted()); EXPECT_TRUE(request1_.granted());
EXPECT_FALSE(prompt_factory_->is_visible()); EXPECT_FALSE(prompt_factory_->is_visible());
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Accept();
EXPECT_FALSE(prompt_factory_->is_visible());
EXPECT_TRUE(request2_.granted());
}
TEST_P(PermissionRequestManagerTest, SameRequestRejected) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
EXPECT_FALSE(request1_.finished());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
} }
TEST_P(PermissionRequestManagerTest, DuplicateQueuedRequest) { TEST_P(PermissionRequestManagerTest, DuplicateRequest) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown(); WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_); manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
...@@ -433,24 +538,9 @@ TEST_P(PermissionRequestManagerTest, DuplicateQueuedRequest) { ...@@ -433,24 +538,9 @@ TEST_P(PermissionRequestManagerTest, DuplicateQueuedRequest) {
} }
} }
TEST_P(PermissionRequestManagerTest, ForgetRequestsOnPageNavigation) { ////////////////////////////////////////////////////////////////////////////////
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_); // Requests from iframes
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_); ////////////////////////////////////////////////////////////////////////////////
manager_->AddRequest(web_contents()->GetMainFrame(),
&iframe_request_other_domain_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
NavigateAndCommit(GURL("http://www2.google.com/"));
WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
EXPECT_TRUE(request1_.finished());
EXPECT_TRUE(request2_.finished());
EXPECT_TRUE(iframe_request_other_domain_.finished());
}
TEST_P(PermissionRequestManagerTest, MainFrameNoRequestIFrameRequest) { TEST_P(PermissionRequestManagerTest, MainFrameNoRequestIFrameRequest) {
manager_->AddRequest(web_contents()->GetMainFrame(), manager_->AddRequest(web_contents()->GetMainFrame(),
...@@ -573,17 +663,9 @@ TEST_P(PermissionRequestManagerTest, ...@@ -573,17 +663,9 @@ TEST_P(PermissionRequestManagerTest,
EXPECT_TRUE(iframe_request_other_domain_.finished()); EXPECT_TRUE(iframe_request_other_domain_.finished());
} }
TEST_P(PermissionRequestManagerTest, RequestsDontNeedUserGesture) { ////////////////////////////////////////////////////////////////////////////////
WaitForFrameLoad(); // UMA logging
WaitForBubbleToBeShown(); ////////////////////////////////////////////////////////////////////////////////
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(),
&iframe_request_other_domain_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(prompt_factory_->is_visible());
}
// This code path (calling Accept on a non-merged bubble, with no accepted // This code path (calling Accept on a non-merged bubble, with no accepted
// permission) would never be used in actual Chrome, but its still tested for // permission) would never be used in actual Chrome, but its still tested for
...@@ -621,6 +703,10 @@ TEST_P(PermissionRequestManagerTest, UMAForTabSwitching) { ...@@ -621,6 +703,10 @@ TEST_P(PermissionRequestManagerTest, UMAForTabSwitching) {
1); 1);
} }
////////////////////////////////////////////////////////////////////////////////
// UI selectors
////////////////////////////////////////////////////////////////////////////////
// Simulate a NotificationPermissionUiSelector that simply returns a // Simulate a NotificationPermissionUiSelector that simply returns a
// predefined |ui_to_use| every time. // predefined |ui_to_use| every time.
class MockNotificationPermissionUiSelector class MockNotificationPermissionUiSelector
...@@ -741,18 +827,6 @@ TEST_P(PermissionRequestManagerTest, ...@@ -741,18 +827,6 @@ TEST_P(PermissionRequestManagerTest,
Accept(); Accept();
} }
TEST_P(PermissionRequestManagerTest, RequestsNotSupported) {
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown();
Accept();
EXPECT_TRUE(request1_.granted());
manager_->set_web_contents_supports_permission_requests(false);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
EXPECT_TRUE(request2_.cancelled());
}
TEST_P(PermissionRequestManagerTest, MultipleUiSelectors) { TEST_P(PermissionRequestManagerTest, MultipleUiSelectors) {
using QuietUiReason = NotificationPermissionUiSelector::QuietUiReason; using QuietUiReason = NotificationPermissionUiSelector::QuietUiReason;
...@@ -828,96 +902,6 @@ TEST_P(PermissionRequestManagerTest, MultipleUiSelectors) { ...@@ -828,96 +902,6 @@ TEST_P(PermissionRequestManagerTest, MultipleUiSelectors) {
} }
} }
TEST_P(PermissionRequestManagerTest, ThreeRequestsStackOrderChip) {
if (!GetParam())
return;
// Test new permissions order, requests shouldn't be grouped.
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request_mic_.granted());
EXPECT_FALSE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request1_.granted());
}
// Test new permissions order by adding requests one at a time.
TEST_P(PermissionRequestManagerTest, ThreeRequestsOneByOneStackOrderChip) {
if (!GetParam())
return;
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request_mic_.granted());
EXPECT_FALSE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request2_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request1_.granted());
}
// Test if grouping media requests works with new requests order processing.
TEST_P(PermissionRequestManagerTest, GroupedMediaRequestsChip) {
if (!GetParam())
return;
manager_->AddRequest(web_contents()->GetMainFrame(), &request1_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_camera_);
manager_->AddRequest(web_contents()->GetMainFrame(), &request_mic_);
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 2);
Accept();
EXPECT_TRUE(request_camera_.granted());
EXPECT_TRUE(request_mic_.granted());
EXPECT_FALSE(request1_.granted());
WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_EQ(prompt_factory_->request_count(), 1);
Accept();
EXPECT_TRUE(request1_.granted());
}
INSTANTIATE_TEST_SUITE_P(All, INSTANTIATE_TEST_SUITE_P(All,
PermissionRequestManagerTest, PermissionRequestManagerTest,
::testing::Values(false, true)); ::testing::Values(false, true));
......
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