Migrate OnTask window tracker unit tests to browser tests
This change migrates the OnTask window tracker unit tests to browser tests to ensure we are using a real browser implementation to test window tracker behavior. Similar migration for the OnTask nav throttle tests will follow in a separate CL. Bug: b:388073477 Change-Id: Ie9f114bfefdc3a92c389f04da36b1a0f4ea6a707 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6168415 Reviewed-by: April Zhou <aprilzhou@google.com> Reviewed-by: Luke Cao <caott@google.com> Commit-Queue: Vignesh Shenvi <vshenvi@google.com> Cr-Commit-Position: refs/heads/main@{#1407495}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
b8a71205a7
commit
4b51bb20a3
chrome/browser/ash/boca/on_task
@@ -110,6 +110,7 @@ source_set("browser_tests") {
|
||||
"//chrome/browser/ash/boca",
|
||||
"//chrome/browser/ui/ash/system_web_apps",
|
||||
"//chrome/test:test_support",
|
||||
"//chromeos/ash/components/boca",
|
||||
"//chromeos/ash/components/boca/on_task",
|
||||
"//chromeos/ash/components/boca/proto",
|
||||
"//chromeos/ui/wm",
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -37,20 +37,13 @@ using ::testing::Return;
|
||||
namespace {
|
||||
constexpr char kTabUrl1[] = "http://example.com";
|
||||
constexpr char kTabUrl1SubDomain1[] = "http://example.child.com";
|
||||
constexpr char kTabUrl1SubDomain2[] = "http://example.b.com";
|
||||
constexpr char kTabUrl1FrontSubDomain1[] = "http://sub.example.com";
|
||||
constexpr char kTabUrl1WithPath[] = "http://example.child.com/random/path/";
|
||||
constexpr char kTabUrl1WithSubPage[] = "http://example.com/blah-blah";
|
||||
constexpr char kTabUrl1WithRandomQuery[] =
|
||||
"http://example.child.com/q?randomness";
|
||||
constexpr char kTabUrl1DomainRedirect[] =
|
||||
"http://example.child.com/redirected/url/path.html";
|
||||
constexpr char kTabUrlRedirectedUrl[] = "http://redirect-url.com/q?randomness";
|
||||
constexpr char kTabUrl2[] = "http://company.org";
|
||||
constexpr char kTabUrl2SubDomain1[] = "http://company.a.org";
|
||||
constexpr char kTabGoogleUrl[] = "http://google.com";
|
||||
constexpr char kTabDocsUrl[] = "http://docs.google.com";
|
||||
constexpr char kTabGooglePath[] = "http://google.com/blah-blah";
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -88,14 +81,18 @@ class FakeOnTaskNotificationsManagerDelegate
|
||||
std::set<std::string> notifications_shown_;
|
||||
};
|
||||
|
||||
// TODO(b/36741761): Migrate to browser test.
|
||||
// TODO(b/36741761): Refactor existing browser init timing after migrate to
|
||||
// browser test, right now it's very hard to tell when does tab strip update
|
||||
// happens.
|
||||
class OnTaskLockedSessionWindowTrackerTest : public BrowserWithTestWindowTest {
|
||||
// TODO(crbug.com/384769231) - Migrate nav throttle unit tests to browser tests.
|
||||
class OnTaskNavigationThrottleTest : public BrowserWithTestWindowTest {
|
||||
protected:
|
||||
OnTaskNavigationThrottleTest() {
|
||||
scoped_feature_list_.InitWithFeatures(
|
||||
/*enabled_features=*/{ash::features::kBoca,
|
||||
ash::features::kBocaConsumer},
|
||||
/*disabled_features=*/{});
|
||||
}
|
||||
|
||||
void SetUp() override {
|
||||
// TODO(crbug.com/36741761): Change this to regular mock when remigrated to
|
||||
// TODO(crbug.com/384769231): Change this to regular mock when remigrated to
|
||||
// browser test.
|
||||
ON_CALL(boca_window_observer_, OnActiveTabChanged(_))
|
||||
.WillByDefault(Return());
|
||||
@@ -156,703 +153,6 @@ class OnTaskLockedSessionWindowTrackerTest : public BrowserWithTestWindowTest {
|
||||
BrowserWithTestWindowTest::TearDown();
|
||||
}
|
||||
|
||||
protected:
|
||||
raw_ptr<FakeOnTaskNotificationsManagerDelegate>
|
||||
fake_notifications_delegate_ptr_;
|
||||
NiceMock<MockBocaWindowObserver> boca_window_observer_;
|
||||
};
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, RegisterUrlsAndRestrictionLevels) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_b(kTabUrl2);
|
||||
const GURL url_a_subdomain(kTabUrl1SubDomain1);
|
||||
const GURL url_b_subdomain(kTabUrl2SubDomain1);
|
||||
const GURL url_a_subdomain2(kTabUrl1SubDomain2);
|
||||
|
||||
AddTab(browser(), url_a);
|
||||
AddTab(browser(), url_b);
|
||||
AddTab(browser(), url_a_subdomain);
|
||||
AddTab(browser(), url_b_subdomain);
|
||||
AddTab(browser(), url_a_subdomain2);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(4), url_a,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(3), url_b,
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(2), url_a_subdomain,
|
||||
LockedNavigationOptions::DOMAIN_NAVIGATION);
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(1), url_b_subdomain,
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_a_subdomain2,
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 5u);
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(4))],
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(3))],
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(2))],
|
||||
LockedNavigationOptions::DOMAIN_NAVIGATION);
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(1))],
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
EXPECT_EQ(on_task_blocklist->one_level_deep_original_url().size(), 2u);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
RegisterChildUrlsWithRestrictions) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_a_child(kTabUrl1SubDomain1);
|
||||
|
||||
AddTab(browser(), url_a);
|
||||
AddTab(browser(), url_a_child);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(1), url_a,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
on_task_blocklist->MaybeSetURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_a_child,
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 1u);
|
||||
ASSERT_EQ(on_task_blocklist->child_tab_to_nav_filters().size(), 1u);
|
||||
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(1))],
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
EXPECT_EQ(
|
||||
on_task_blocklist
|
||||
->child_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
EXPECT_EQ(on_task_blocklist->one_level_deep_original_url().size(), 1u);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
NavigateCurrentTabWithMultipleRestrictionsMaintainTabRestrictions) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url(kTabUrl1);
|
||||
const GURL url_subdomain(kTabUrl1SubDomain1);
|
||||
const GURL url_with_query(kTabUrl1WithRandomQuery);
|
||||
const GURL url_with_path(kTabUrl1WithPath);
|
||||
AddTab(browser(), url_subdomain);
|
||||
AddTab(browser(), url);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(1), url_subdomain,
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 2u);
|
||||
ASSERT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
on_task_blocklist->MaybeSetURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(1), url_subdomain,
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
NavigateAndCommitActiveTab(url_subdomain);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
|
||||
NavigateAndCommitActiveTab(url_with_query);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
NavigateAndCommitActiveTab(url_with_path);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, NavigateNonParentTab) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url(kTabUrl1);
|
||||
const GURL url_subdomain(kTabUrl1SubDomain1);
|
||||
const GURL url_with_query(kTabUrl1WithRandomQuery);
|
||||
const GURL url_with_path(kTabUrl1WithPath);
|
||||
AddTab(browser(), url_subdomain);
|
||||
AddTab(browser(), url);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
on_task_blocklist->MaybeSetURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(1), url_subdomain,
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 1u);
|
||||
ASSERT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->child_tab_to_nav_filters().size(), 1u);
|
||||
ASSERT_EQ(
|
||||
on_task_blocklist
|
||||
->child_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(1))],
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
task_environment()->RunUntilIdle();
|
||||
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
browser()->tab_strip_model()->ActivateTabAt(1);
|
||||
task_environment()->RunUntilIdle();
|
||||
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
NavigateCurrentTabWithNewRestrictedLevelFromRedirectUrl) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url(kTabUrl1);
|
||||
const GURL url_subdomain(kTabUrl1SubDomain1);
|
||||
AddTab(browser(), url);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 1u);
|
||||
ASSERT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
NavigateAndCommitActiveTab(url_subdomain);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
const GURL url_redirect(kTabUrlRedirectedUrl);
|
||||
|
||||
NavigateAndCommitActiveTab(url_redirect);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
NavigateCurrentTabThatSpawnsNewTab) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url(kTabUrl1);
|
||||
const GURL url_subdomain(kTabUrl1SubDomain1);
|
||||
AddTab(browser(), url);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url,
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 1u);
|
||||
ASSERT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::LIMITED_NAVIGATION);
|
||||
|
||||
const SessionID active_tab_id = sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0));
|
||||
EXPECT_CALL(boca_window_observer_,
|
||||
OnTabAdded(active_tab_id, _, url_subdomain))
|
||||
.Times(1);
|
||||
AddTab(browser(), url_subdomain);
|
||||
const GURL url_redirect(kTabUrl1DomainRedirect);
|
||||
|
||||
NavigateAndCommitActiveTab(url_redirect);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
// Sanity check to make sure child tabs aren't added as parent tabs.
|
||||
EXPECT_FALSE(
|
||||
on_task_blocklist->IsParentTab(tab_strip_model->GetWebContentsAt(0)));
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
NavigateCurrentTabWithSameDomainAndOneLevelDeepFromRedirectUrl) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url(kTabUrl1);
|
||||
const GURL url_subdomain(kTabUrl1SubDomain1);
|
||||
const GURL url_with_query(kTabUrl1WithRandomQuery);
|
||||
AddTab(browser(), url_subdomain);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_subdomain,
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
ASSERT_EQ(on_task_blocklist->parent_tab_to_nav_filters().size(), 1u);
|
||||
ASSERT_EQ(
|
||||
on_task_blocklist
|
||||
->parent_tab_to_nav_filters()[sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0))],
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
NavigateAndCommitActiveTab(url);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
const GURL url_redirect(kTabUrl1DomainRedirect);
|
||||
|
||||
NavigateAndCommitActiveTab(url_redirect);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
|
||||
const GURL url_redirect_not_same_domain(kTabUrlRedirectedUrl);
|
||||
|
||||
NavigateAndCommitActiveTab(url_redirect_not_same_domain);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::
|
||||
SAME_DOMAIN_OPEN_OTHER_DOMAIN_LIMITED_NAVIGATION);
|
||||
const SessionID active_tab_id = sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0));
|
||||
EXPECT_CALL(boca_window_observer_, OnTabAdded(active_tab_id, _, url_redirect))
|
||||
.Times(1);
|
||||
// Redirect happens in a new tab.
|
||||
AddTab(browser(), url_redirect);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
NavigateAndCommitActiveTab(url_redirect_not_same_domain);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, SwitchTabWithNewRestrictedLevel) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_b(kTabUrl2);
|
||||
// Add Tab inserts tab at the 0th index.
|
||||
AddTab(browser(), url_a);
|
||||
AddTab(browser(), url_b);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(1), url_a,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_b,
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
browser()->tab_strip_model()->ActivateTabAt(1);
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
BlockUrlSuccessfullyForLimitedNav) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_b(kTabUrl2);
|
||||
const GURL url_c(kTabUrl1WithSubPage);
|
||||
AddTab(browser(), url_a);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_a,
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
task_environment()->RunUntilIdle();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::BLOCK_NAVIGATION);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_b),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_c),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
AllowAndBlockUrlSuccessfullyForSameDomainNav) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_a_front_subdomain(kTabUrl1FrontSubDomain1);
|
||||
const GURL url_a_subpage(kTabUrl1WithSubPage);
|
||||
const GURL url_a_subdomain_page(kTabUrl1WithPath);
|
||||
const GURL url_a_subdomain(kTabUrl1SubDomain1);
|
||||
const GURL url_b(kTabUrl2);
|
||||
|
||||
AddTab(browser(), url_a);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_a,
|
||||
LockedNavigationOptions::DOMAIN_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
task_environment()->RunUntilIdle();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::DOMAIN_NAVIGATION);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_front_subdomain),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_subpage),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_subdomain),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_subdomain_page),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_b),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
AllowUrlSuccessfullyForUnrestrictedNav) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_a_front_subdomain(kTabUrl1FrontSubDomain1);
|
||||
const GURL url_a_path(kTabUrl1WithPath);
|
||||
const GURL url_a_subdomain(kTabUrl1SubDomain1);
|
||||
const GURL url_b(kTabUrl2);
|
||||
|
||||
AddTab(browser(), url_a);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), url_a,
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
task_environment()->RunUntilIdle();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::OPEN_NAVIGATION);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_front_subdomain),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_path),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_a_subdomain),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_b),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
AllowAndBlockUrlSuccessfullyForGoogleSameDomainNav) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL google_url(kTabGoogleUrl);
|
||||
const GURL docs_url(kTabDocsUrl);
|
||||
const GURL random_google_url(kTabGooglePath);
|
||||
const GURL url_b(kTabUrl1SubDomain1);
|
||||
const GURL not_google_url(kTabUrl2);
|
||||
|
||||
AddTab(browser(), google_url);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
|
||||
on_task_blocklist->SetParentURLRestrictionLevel(
|
||||
tab_strip_model->GetWebContentsAt(0), google_url,
|
||||
LockedNavigationOptions::DOMAIN_NAVIGATION);
|
||||
window_tracker->RefreshUrlBlocklist();
|
||||
task_environment()->RunUntilIdle();
|
||||
EXPECT_EQ(on_task_blocklist->current_page_restriction_level(),
|
||||
LockedNavigationOptions::DOMAIN_NAVIGATION);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(docs_url),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(random_google_url),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_ALLOWLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(url_b),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
EXPECT_EQ(on_task_blocklist->GetURLBlocklistState(not_google_url),
|
||||
policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
NewBrowserWindowsDontOpenDuringLockedFullscreen) {
|
||||
// Set up relevant features for browser instance observation.
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitWithFeatures(
|
||||
/*enabled_features=*/{ash::features::kBoca, ash::features::kBocaConsumer},
|
||||
/*disabled_features=*/{});
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
ash::TestWindowBuilder builder;
|
||||
const std::unique_ptr<aura::Window> native_window =
|
||||
builder.SetTestWindowDelegate().AllowAllWindowStates().Build();
|
||||
static_cast<TestBrowserWindow*>(window())->SetNativeWindow(
|
||||
native_window.get());
|
||||
PinWindow(window()->GetNativeWindow(), /*trusted=*/true);
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
const std::unique_ptr<Browser> normal_browser(
|
||||
CreateTestBrowser(/*popup=*/false));
|
||||
ASSERT_TRUE(base::test::RunUntil(
|
||||
[&normal_browser]() { return normal_browser != nullptr; }));
|
||||
|
||||
EXPECT_TRUE(
|
||||
static_cast<TestBrowserWindow*>(normal_browser->window())->IsClosed());
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
NewBrowserWindowsCanOpenDuringUnlockedSession) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
ash::TestWindowBuilder builder;
|
||||
const std::unique_ptr<aura::Window> native_window =
|
||||
builder.SetTestWindowDelegate().AllowAllWindowStates().Build();
|
||||
static_cast<TestBrowserWindow*>(window())->SetNativeWindow(
|
||||
native_window.get());
|
||||
PinWindow(window()->GetNativeWindow(), /*trusted=*/false);
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
const std::unique_ptr<Browser> normal_browser(
|
||||
CreateTestBrowser(/*popup=*/false));
|
||||
ASSERT_TRUE(base::test::RunUntil(
|
||||
[&normal_browser]() { return normal_browser != nullptr; }));
|
||||
|
||||
EXPECT_FALSE(
|
||||
static_cast<TestBrowserWindow*>(normal_browser->window())->IsClosed());
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, NewBrowserPopupIsRegistered) {
|
||||
// Set up relevant features for browser instance observation.
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitWithFeatures(
|
||||
/*enabled_features=*/{ash::features::kBoca, ash::features::kBocaConsumer},
|
||||
/*disabled_features=*/{});
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
const std::unique_ptr<Browser> popup_browser(
|
||||
CreateTestBrowser(/*popup=*/true));
|
||||
EXPECT_EQ(BrowserList::GetInstance()->size(), 2u);
|
||||
EXPECT_FALSE(
|
||||
static_cast<TestBrowserWindow*>(popup_browser->window())->IsClosed());
|
||||
EXPECT_FALSE(window_tracker->CanOpenNewPopup());
|
||||
popup_browser->OnWindowClosing();
|
||||
EXPECT_TRUE(window_tracker->CanOpenNewPopup());
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, BrowserClose) {
|
||||
// Set up relevant features for browser instance observation.
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitWithFeatures(
|
||||
/*enabled_features=*/{ash::features::kBoca, ash::features::kBocaConsumer},
|
||||
/*disabled_features=*/{});
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_a_child(kTabUrl1SubDomain1);
|
||||
AddTab(browser(), url_a);
|
||||
AddTab(browser(), url_a_child);
|
||||
EXPECT_EQ(browser()->tab_strip_model()->count(), 2);
|
||||
ash::TestWindowBuilder builder;
|
||||
const std::unique_ptr<aura::Window> native_window =
|
||||
builder.SetTestWindowDelegate().AllowAllWindowStates().Build();
|
||||
static_cast<TestBrowserWindow*>(window())->SetNativeWindow(
|
||||
native_window.get());
|
||||
PinWindow(window()->GetNativeWindow(), /*trusted=*/true);
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
browser()->OnWindowClosing();
|
||||
ASSERT_TRUE(base::test::RunUntil(
|
||||
[&window_tracker]() { return !window_tracker->browser(); }));
|
||||
EXPECT_FALSE(window_tracker->browser());
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, BrowserTrackingOverride) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const std::unique_ptr<Browser> normal_browser(
|
||||
CreateTestBrowser(/*popup=*/false));
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
window_tracker->InitializeBrowserInfoForTracking(normal_browser.get());
|
||||
ASSERT_NE(window_tracker->browser(), browser());
|
||||
EXPECT_EQ(window_tracker->browser(), normal_browser.get());
|
||||
// Set back to nullptr so during tear down we are not accessing a deleted
|
||||
// normal_browser ptr. Since normal_browser is created only in the lifetime of
|
||||
// this one unittest, and we set the window_tracker to track this, by the time
|
||||
// tear down is called, normal_browser ptr is freed, but there is still a ref
|
||||
// to that ptr by the window_tracker during tear down.
|
||||
window_tracker->InitializeBrowserInfoForTracking(nullptr);
|
||||
}
|
||||
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest, ObserveAddTabAndRemoveTab) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url_a(kTabUrl1);
|
||||
const GURL url_b(kTabUrl2);
|
||||
AddTab(browser(), url_a);
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
ASSERT_EQ(window_tracker->browser(), browser());
|
||||
|
||||
auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
const SessionID active_tab_id = sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0));
|
||||
EXPECT_CALL(boca_window_observer_, OnTabAdded(active_tab_id, _, url_b))
|
||||
.Times(1);
|
||||
AddTab(browser(), url_b);
|
||||
// Sanity check to make sure child tabs aren't added as parent tabs.
|
||||
auto* const on_task_blocklist = window_tracker->on_task_blocklist();
|
||||
EXPECT_FALSE(
|
||||
on_task_blocklist->IsParentTab(tab_strip_model->GetWebContentsAt(0)));
|
||||
|
||||
const SessionID tab_id = sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0));
|
||||
EXPECT_CALL(boca_window_observer_, OnTabRemoved(tab_id)).Times(1);
|
||||
tab_strip_model->DetachAndDeleteWebContentsAt(0);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/36741761):An example test case to add when we switch to
|
||||
// browser test, currently disabled due to cause test flakiness, once migrated
|
||||
// need to rework all test cases to add observer assertion too.
|
||||
TEST_F(OnTaskLockedSessionWindowTrackerTest,
|
||||
DISABLED_NavigateAndTriggerActiveTabUpdated) {
|
||||
CreateWindowTrackerServiceForTesting();
|
||||
auto* const window_tracker =
|
||||
LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
|
||||
const GURL url(kTabUrl1);
|
||||
const GURL url_subdomain(kTabUrl1SubDomain1);
|
||||
const auto* const tab_strip_model = browser()->tab_strip_model();
|
||||
window_tracker->InitializeBrowserInfoForTracking(browser());
|
||||
|
||||
EXPECT_CALL(boca_window_observer_, OnActiveTabChanged(_)).Times(1);
|
||||
const SessionID active_tab_id = sessions::SessionTabHelper::IdForTab(
|
||||
tab_strip_model->GetWebContentsAt(0));
|
||||
EXPECT_CALL(boca_window_observer_,
|
||||
OnTabAdded(active_tab_id, _, url_subdomain))
|
||||
.Times(1);
|
||||
AddTab(browser(), url_subdomain);
|
||||
const GURL url_redirect(kTabUrl1DomainRedirect);
|
||||
|
||||
NavigateAndCommitActiveTab(url_redirect);
|
||||
browser()->tab_strip_model()->UpdateWebContentsStateAt(0,
|
||||
TabChangeType::kAll);
|
||||
}
|
||||
|
||||
class OnTaskNavigationThrottleTest
|
||||
: public OnTaskLockedSessionWindowTrackerTest {
|
||||
protected:
|
||||
OnTaskNavigationThrottleTest() {
|
||||
scoped_feature_list_.InitWithFeatures(
|
||||
/*enabled_features=*/{ash::features::kBoca,
|
||||
ash::features::kBocaConsumer},
|
||||
/*disabled_features=*/{});
|
||||
}
|
||||
|
||||
std::unique_ptr<content::NavigationSimulator> StartNavigation(
|
||||
const GURL& first_url,
|
||||
content::RenderFrameHost* rfh) {
|
||||
@@ -862,7 +162,9 @@ class OnTaskNavigationThrottleTest
|
||||
return simulator;
|
||||
}
|
||||
|
||||
private:
|
||||
raw_ptr<FakeOnTaskNotificationsManagerDelegate>
|
||||
fake_notifications_delegate_ptr_;
|
||||
NiceMock<MockBocaWindowObserver> boca_window_observer_;
|
||||
base::test::ScopedFeatureList scoped_feature_list_;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user