Skip to content

Commit

Permalink
Add tests for browser browser commands
Browse files Browse the repository at this point in the history
and cleanup brave app menu test.
  • Loading branch information
simonhong committed Dec 15, 2019
1 parent a5cc65d commit 4586783
Show file tree
Hide file tree
Showing 3 changed files with 230 additions and 137 deletions.
195 changes: 195 additions & 0 deletions browser/ui/brave_browser_command_controller_browsertest.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include <memory>

#include "brave/browser/profiles/profile_util.h"
#include "brave/browser/tor/buildflags.h"
#include "brave/browser/ui/brave_browser_command_controller.h"
#include "brave/browser/ui/browser_commands.h"
#include "brave/components/brave_rewards/browser/buildflags/buildflags.h"
#include "brave/components/brave_sync/buildflags/buildflags.h"
#include "brave/components/brave_wallet/browser/buildflags/buildflags.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_window.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_utils.h"

#if BUILDFLAG(ENABLE_TOR)
#include "brave/browser/tor/tor_profile_service.h"
#endif

using BraveBrowserCommandControllerTest = InProcessBrowserTest;

IN_PROC_BROWSER_TEST_F(BraveBrowserCommandControllerTest,
BraveCommandsEnableTest) {
// Test normal browser's brave commands status.
auto* command_controller = browser()->command_controller();
#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_ADBLOCK));

#if BUILDFLAG(ENABLE_TOR)
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_TRUE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#else
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#endif

#if BUILDFLAG(ENABLE_BRAVE_SYNC)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#endif

#if BUILDFLAG(BRAVE_WALLET_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_ADD_NEW_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(
IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));

// Create private browser and test its brave commands status.
auto* private_browser = CreateIncognitoBrowser();
command_controller = private_browser->command_controller();
#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_ADBLOCK));

#if BUILDFLAG(ENABLE_TOR)
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_TRUE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#endif

#if BUILDFLAG(ENABLE_BRAVE_SYNC)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#endif

#if BUILDFLAG(BRAVE_WALLET_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_ADD_NEW_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(
IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));

// Create guest browser and test its brave commands status.
content::WindowedNotificationObserver browser_creation_observer(
chrome::NOTIFICATION_BROWSER_OPENED,
content::NotificationService::AllSources());
profiles::SwitchToGuestProfile(ProfileManager::CreateCallback());

browser_creation_observer.Wait();

auto* browser_list = BrowserList::GetInstance();
Browser* guest_browser = nullptr;
for (Browser* browser : *browser_list) {
if (browser->profile()->IsGuestSession()) {
guest_browser = browser;
break;
}
}
DCHECK(guest_browser);
command_controller = guest_browser->command_controller();
#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_ADBLOCK));

#if BUILDFLAG(ENABLE_TOR)
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#endif

#if BUILDFLAG(ENABLE_BRAVE_SYNC)
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#endif

#if BUILDFLAG(BRAVE_WALLET_ENABLED)
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#endif

EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_ADD_NEW_PROFILE));
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(
IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));

// Launch tor window and check its command status.
content::WindowedNotificationObserver tor_browser_creation_observer(
chrome::NOTIFICATION_BROWSER_OPENED,
content::NotificationService::AllSources());
brave::NewOffTheRecordWindowTor(browser());
tor_browser_creation_observer.Wait();
Browser* tor_browser = nullptr;
for (Browser* browser : *browser_list) {
if (brave::IsTorProfile(browser->profile())) {
tor_browser = browser;
break;
}
}
DCHECK(tor_browser);
command_controller = tor_browser->command_controller();
#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_ADBLOCK));

#if BUILDFLAG(ENABLE_TOR)
EXPECT_TRUE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_TRUE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#endif

#if BUILDFLAG(ENABLE_BRAVE_SYNC)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#endif

#if BUILDFLAG(BRAVE_WALLET_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#endif

EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_ADD_NEW_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_OPEN_GUEST_PROFILE));
EXPECT_TRUE(command_controller->IsCommandEnabled(
IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER));

// Check tor commands when tor is disabled.
#if BUILDFLAG(ENABLE_TOR)
tor::TorProfileService::SetTorDisabled(true);
command_controller = browser()->command_controller();
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#endif
}
171 changes: 34 additions & 137 deletions browser/ui/toolbar/brave_app_menu_model_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,154 +5,51 @@

#include "brave/browser/ui/toolbar/brave_app_menu_model.h"

#include <memory>
#include <algorithm>
#include <vector>

#include "brave/app/brave_command_ids.h"
#include "brave/browser/tor/buildflags.h"
#include "brave/browser/ui/brave_browser_command_controller.h"
#include "brave/common/pref_names.h"
#include "brave/common/tor/pref_names.h"
#include "brave/components/brave_rewards/browser/buildflags/buildflags.h"
#include "brave/components/brave_sync/buildflags/buildflags.h"
#include "brave/components/brave_wallet/browser/buildflags/buildflags.h"
#include "chrome/browser/chrome_browser_main.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_window.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_utils.h"

#if BUILDFLAG(ENABLE_TOR)
#include "brave/browser/tor/tor_profile_service.h"
#endif

using BraveAppMenuBrowserTest = InProcessBrowserTest;

IN_PROC_BROWSER_TEST_F(BraveAppMenuBrowserTest, BasicTest) {
// Test brave menu order test.
// Brave menu is inserted based on corresponding commands enable status.
// So, this doesn't test for each profiles(normal, private, tor and guest).
// Instead, BraveBrowserCommandControllerTest will do that.
IN_PROC_BROWSER_TEST_F(BraveAppMenuBrowserTest, MenuOrderTest) {
auto* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
BraveAppMenuModel normal_model(browser_view->toolbar(), browser());
normal_model.Init();

// Check normal window has both menu items.
// -1 means |model| doesn't have passed command id.
EXPECT_NE(-1, normal_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_REWARDS));
EXPECT_NE(-1, normal_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_SYNC));
#if BUILDFLAG(BRAVE_WALLET_ENABLED)
EXPECT_NE(-1, normal_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_WALLET));
#else
EXPECT_EQ(-1, normal_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_WALLET));
#endif

auto* command_controller = browser()->command_controller();
#if BUILDFLAG(ENABLE_TOR)
EXPECT_NE(
-1, normal_model.GetIndexOfCommandId(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
// Check new tor browser command is only enabled for normal window.
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_TRUE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
#endif

#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#endif

#if BUILDFLAG(ENABLE_BRAVE_SYNC)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#endif

#if BUILDFLAG(BRAVE_WALLET_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
#endif

// Create proviate browser.
auto* private_browser = CreateIncognitoBrowser();
auto* private_browser_view =
BrowserView::GetBrowserViewForBrowser(private_browser);
BraveAppMenuModel private_model(private_browser_view->toolbar(),
private_browser);
private_model.Init();

// Check private window has both menu items.
// -1 means |model| doesn't have passed command id.
EXPECT_NE(-1, private_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_REWARDS));
EXPECT_NE(-1, private_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_SYNC));

command_controller = private_browser->command_controller();
#if BUILDFLAG(BRAVE_REWARDS_ENABLED)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
#endif
#if BUILDFLAG(ENABLE_BRAVE_SYNC)
EXPECT_TRUE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#else
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
#endif

content::WindowedNotificationObserver browser_creation_observer(
chrome::NOTIFICATION_BROWSER_OPENED,
content::NotificationService::AllSources());
profiles::SwitchToGuestProfile(ProfileManager::CreateCallback());

browser_creation_observer.Wait();

auto* browser_list = BrowserList::GetInstance();
Browser* guest_browser = nullptr;
for (Browser* browser : *browser_list) {
if (browser->profile()->IsGuestSession()) {
guest_browser = browser;
break;
}
int commands_in_order[] = {
IDC_NEW_TAB,
IDC_NEW_TOR_CONNECTION_FOR_SITE,
IDC_NEW_WINDOW,
IDC_NEW_INCOGNITO_WINDOW,
IDC_NEW_OFFTHERECORD_WINDOW_TOR,
IDC_SHOW_BRAVE_REWARDS,
IDC_RECENT_TABS_MENU,
IDC_BOOKMARKS_MENU,
IDC_SHOW_DOWNLOADS,
IDC_SHOW_BRAVE_WALLET,
IDC_MANAGE_EXTENSIONS,
IDC_SHOW_BRAVE_SYNC,
IDC_SHOW_BRAVE_ADBLOCK,
IDC_ADD_NEW_PROFILE,
IDC_OPEN_GUEST_PROFILE,
IDC_SHOW_BRAVE_WEBCOMPAT_REPORTER
};

std::vector<int> commands_index;
for (int id : commands_in_order) {
int index = normal_model.GetIndexOfCommandId(id);
if (index != -1)
commands_index.push_back(index);
}
DCHECK(guest_browser);

auto* guest_browser_view =
BrowserView::GetBrowserViewForBrowser(guest_browser);
BraveAppMenuModel guest_model(guest_browser_view->toolbar(), guest_browser);
guest_model.Init();

// Check guest window doesn't have them.
// -1 means |model| doesn't have passed command id.
EXPECT_EQ(-1, guest_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_REWARDS));
EXPECT_EQ(-1, guest_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_SYNC));
EXPECT_EQ(-1, guest_model.GetIndexOfCommandId(IDC_SHOW_BRAVE_WALLET));

command_controller = guest_browser->command_controller();
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_REWARDS));
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_SYNC));
EXPECT_FALSE(command_controller->IsCommandEnabled(IDC_SHOW_BRAVE_WALLET));
}

#if BUILDFLAG(ENABLE_TOR)
IN_PROC_BROWSER_TEST_F(BraveAppMenuBrowserTest, TorAppMenuTest) {
// Tor is enabled by default. Change pref to disable.
tor::TorProfileService::SetTorDisabled(true);

auto* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
BraveAppMenuModel normal_model(browser_view->toolbar(), browser());
normal_model.Init();

// -1 means |model| doesn't have passed command id.
EXPECT_EQ(
-1, normal_model.GetIndexOfCommandId(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
auto* command_controller = browser()->command_controller();
// Check tor browser commands are disabled.
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_TOR_CONNECTION_FOR_SITE));
EXPECT_FALSE(
command_controller->IsCommandEnabled(IDC_NEW_OFFTHERECORD_WINDOW_TOR));
EXPECT_TRUE(std::is_sorted(std::begin(commands_index),
std::end(commands_index)));
}
#endif
1 change: 1 addition & 0 deletions test/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,7 @@ test("brave_browser_tests") {
"//brave/browser/search_engines/search_engine_provider_service_browsertest.cc",
"//brave/browser/themes/brave_theme_service_browsertest.cc",
"//brave/browser/ui/bookmark/bookmark_tab_helper_browsertest.cc",
"//brave/browser/ui/brave_browser_command_controller_browsertest.cc",
"//brave/browser/ui/content_settings/brave_autoplay_blocked_image_model_browsertest.cc",
"//brave/browser/ui/views/brave_actions/brave_actions_container_browsertest.cc",
"//brave/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc",
Expand Down

0 comments on commit 4586783

Please sign in to comment.