Commit 3c7580ad authored by Ramin Halavati's avatar Ramin Halavati Committed by Commit Bot

Update BrowserCommandController and tests for ephemeral Guest profiles.

A few commands are updated in browser command controller for ephemeral
Guest profiles and the tests are updated to cover both old (OTR) Guest
profiles and the new ephemeral ones.

Please see go/ephemeral-guest-profiles for more context.

Bug: 1125474
Change-Id: Ifa4890dab8d971aada471fca0a03861ca14c5e90
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2517588Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Commit-Queue: Ramin Halavati <rhalavati@chromium.org>
Cr-Commit-Position: refs/heads/master@{#824318}
parent e9fa7895
...@@ -1094,11 +1094,13 @@ void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability( ...@@ -1094,11 +1094,13 @@ void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability(
!profile->IsGuestSession() && !profile->IsEphemeralGuestProfile()); !profile->IsGuestSession() && !profile->IsEphemeralGuestProfile());
const bool forced_incognito = const bool forced_incognito =
incognito_availability == IncognitoModePrefs::FORCED || incognito_availability == IncognitoModePrefs::FORCED;
profile->IsGuestSession(); // Guest always runs in Incognito mode. const bool is_guest =
profile->IsGuestSession() || profile->IsEphemeralGuestProfile();
command_updater->UpdateCommandEnabled( command_updater->UpdateCommandEnabled(
IDC_SHOW_BOOKMARK_MANAGER, IDC_SHOW_BOOKMARK_MANAGER,
browser_defaults::bookmarks_enabled && !forced_incognito); browser_defaults::bookmarks_enabled && !forced_incognito && !is_guest);
extensions::ExtensionService* extension_service = extensions::ExtensionService* extension_service =
extensions::ExtensionSystem::Get(profile)->extension_service(); extensions::ExtensionSystem::Get(profile)->extension_service();
const bool enable_extensions = const bool enable_extensions =
...@@ -1108,13 +1110,16 @@ void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability( ...@@ -1108,13 +1110,16 @@ void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability(
// Bookmark manager and settings page/subpages are forced to open in normal // Bookmark manager and settings page/subpages are forced to open in normal
// mode. For this reason we disable these commands when incognito is forced. // mode. For this reason we disable these commands when incognito is forced.
command_updater->UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS,
enable_extensions && !forced_incognito);
command_updater->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, !forced_incognito);
command_updater->UpdateCommandEnabled( command_updater->UpdateCommandEnabled(
IDC_OPTIONS, !forced_incognito || profile->IsGuestSession()); IDC_MANAGE_EXTENSIONS,
command_updater->UpdateCommandEnabled(IDC_SHOW_SIGNIN, !forced_incognito); enable_extensions && !forced_incognito && !is_guest);
command_updater->UpdateCommandEnabled(IDC_IMPORT_SETTINGS,
!forced_incognito && !is_guest);
command_updater->UpdateCommandEnabled(IDC_OPTIONS,
!forced_incognito || is_guest);
command_updater->UpdateCommandEnabled(IDC_SHOW_SIGNIN,
!forced_incognito && !is_guest);
} }
void BrowserCommandController::UpdateCommandsForIncognitoAvailability() { void BrowserCommandController::UpdateCommandsForIncognitoAvailability() {
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "chrome/browser/ui/tab_modal_confirm_dialog_browsertest.h" #include "chrome/browser/ui/tab_modal_confirm_dialog_browsertest.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/ui_test_utils.h" #include "chrome/test/base/ui_test_utils.h"
#include "components/search_engines/template_url_service.h" #include "components/search_engines/template_url_service.h"
#include "components/sessions/core/tab_restore_service.h" #include "components/sessions/core/tab_restore_service.h"
...@@ -84,10 +85,22 @@ IN_PROC_BROWSER_TEST_F(BrowserCommandControllerBrowserTest, DisableFind) { ...@@ -84,10 +85,22 @@ IN_PROC_BROWSER_TEST_F(BrowserCommandControllerBrowserTest, DisableFind) {
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FIND)); EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FIND));
} }
// TODO(https://crbug.com/1125474): Expand to cover ChromeOS and ephemeral Guest // TODO(https://crbug.com/1125474): Expand to cover ChromeOS.
// profiles.
#if !defined(OS_CHROMEOS) #if !defined(OS_CHROMEOS)
IN_PROC_BROWSER_TEST_F(BrowserCommandControllerBrowserTest, class GuestBrowserCommandControllerBrowserTest
: public BrowserCommandControllerBrowserTest,
public testing::WithParamInterface<bool> {
public:
GuestBrowserCommandControllerBrowserTest() {
TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles(
scoped_feature_list_, GetParam());
}
private:
base::test::ScopedFeatureList scoped_feature_list_;
};
IN_PROC_BROWSER_TEST_P(GuestBrowserCommandControllerBrowserTest,
NewAvatarMenuEnabledInGuestMode) { NewAvatarMenuEnabledInGuestMode) {
EXPECT_EQ(1U, BrowserList::GetInstance()->size()); EXPECT_EQ(1U, BrowserList::GetInstance()->size());
...@@ -97,6 +110,10 @@ IN_PROC_BROWSER_TEST_F(BrowserCommandControllerBrowserTest, ...@@ -97,6 +110,10 @@ IN_PROC_BROWSER_TEST_F(BrowserCommandControllerBrowserTest,
const CommandUpdater* command_updater = browser->command_controller(); const CommandUpdater* command_updater = browser->command_controller();
EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU)); EXPECT_TRUE(command_updater->IsCommandEnabled(IDC_SHOW_AVATAR_MENU));
} }
INSTANTIATE_TEST_SUITE_P(AllGuestTypes,
GuestBrowserCommandControllerBrowserTest,
/*is_ephemeral=*/testing::Bool());
#endif #endif
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
......
...@@ -33,6 +33,24 @@ ...@@ -33,6 +33,24 @@
typedef BrowserWithTestWindowTest BrowserCommandControllerTest; typedef BrowserWithTestWindowTest BrowserCommandControllerTest;
class GuestBrowserCommandControllerTest
: public BrowserWithTestWindowTest,
public testing::WithParamInterface<bool> {
public:
GuestBrowserCommandControllerTest() : is_ephemeral_(GetParam()) {
// Change the value if Ephemeral is not supported.
is_ephemeral_ &=
TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles(
scoped_feature_list_, is_ephemeral_);
}
bool is_ephemeral() const { return is_ephemeral_; }
private:
bool is_ephemeral_;
base::test::ScopedFeatureList scoped_feature_list_;
};
TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKey) { TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKey) {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
// F1-3 keys are reserved Chrome accelerators on Chrome OS. // F1-3 keys are reserved Chrome accelerators on Chrome OS.
...@@ -157,7 +175,7 @@ TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKeyIsApp) { ...@@ -157,7 +175,7 @@ TEST_F(BrowserCommandControllerTest, IsReservedCommandOrKeyIsApp) {
#endif // USE_AURA #endif // USE_AURA
} }
TEST_F(BrowserCommandControllerTest, IncognitoCommands) { TEST_P(GuestBrowserCommandControllerTest, IncognitoCommands) {
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS)); EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPTIONS));
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS));
EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_SIGNIN)); EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_SHOW_SIGNIN));
...@@ -300,10 +318,14 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, ...@@ -300,10 +318,14 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow,
// Test that uses FullscreenTestBrowserWindow for its window. // Test that uses FullscreenTestBrowserWindow for its window.
class BrowserCommandControllerFullscreenTest class BrowserCommandControllerFullscreenTest
: public BrowserWithTestWindowTest { : public BrowserWithTestWindowTest,
public testing::WithParamInterface<bool> {
public: public:
BrowserCommandControllerFullscreenTest() {} BrowserCommandControllerFullscreenTest() {
~BrowserCommandControllerFullscreenTest() override {} TestingProfile::SetScopedFeatureListForEphemeralGuestProfiles(
scoped_feature_list_, GetParam());
}
~BrowserCommandControllerFullscreenTest() override = default;
Browser* GetBrowser() { return BrowserWithTestWindowTest::browser(); } Browser* GetBrowser() { return BrowserWithTestWindowTest::browser(); }
...@@ -313,6 +335,7 @@ class BrowserCommandControllerFullscreenTest ...@@ -313,6 +335,7 @@ class BrowserCommandControllerFullscreenTest
} }
private: private:
base::test::ScopedFeatureList scoped_feature_list_;
DISALLOW_COPY_AND_ASSIGN(BrowserCommandControllerFullscreenTest); DISALLOW_COPY_AND_ASSIGN(BrowserCommandControllerFullscreenTest);
}; };
...@@ -324,7 +347,7 @@ content::WebContents* FullscreenTestBrowserWindow::GetActiveWebContents() { ...@@ -324,7 +347,7 @@ content::WebContents* FullscreenTestBrowserWindow::GetActiveWebContents() {
return test_browser_->GetBrowser()->tab_strip_model()->GetActiveWebContents(); return test_browser_->GetBrowser()->tab_strip_model()->GetActiveWebContents();
} }
TEST_F(BrowserCommandControllerFullscreenTest, TEST_P(BrowserCommandControllerFullscreenTest,
UpdateCommandsForFullscreenMode) { UpdateCommandsForFullscreenMode) {
struct { struct {
int command_id; int command_id;
...@@ -453,10 +476,14 @@ TEST_F(BrowserCommandControllerFullscreenTest, ...@@ -453,10 +476,14 @@ TEST_F(BrowserCommandControllerFullscreenTest,
EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS)); EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_IMPORT_SETTINGS));
} }
INSTANTIATE_TEST_SUITE_P(AllGuestTypes,
BrowserCommandControllerFullscreenTest,
/*is_ephemeral=*/testing::Bool());
// Ensure that the logic for enabling IDC_OPTIONS is consistent, regardless of // Ensure that the logic for enabling IDC_OPTIONS is consistent, regardless of
// the order of entering fullscreen and forced incognito modes. See // the order of entering fullscreen and forced incognito modes. See
// http://crbug.com/694331. // http://crbug.com/694331.
TEST_F(BrowserCommandControllerTest, OptionsConsistency) { TEST_P(GuestBrowserCommandControllerTest, OptionsConsistency) {
TestingProfile* profile = browser()->profile()->AsTestingProfile(); TestingProfile* profile = browser()->profile()->AsTestingProfile();
// Setup guest session. // Setup guest session.
profile->SetGuestSession(true); profile->SetGuestSession(true);
...@@ -509,3 +536,7 @@ TEST_F(BrowserCommandControllerTest, OnSigninAllowedPrefChange) { ...@@ -509,3 +536,7 @@ TEST_F(BrowserCommandControllerTest, OnSigninAllowedPrefChange) {
profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false); profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false);
EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_SIGNIN)); EXPECT_FALSE(command_updater->IsCommandEnabled(IDC_SHOW_SIGNIN));
} }
INSTANTIATE_TEST_SUITE_P(AllGuestTypes,
GuestBrowserCommandControllerTest,
/*is_ephemeral=*/testing::Bool());
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