This source file includes following definitions.
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- SetUp
- TearDown
- SetUpCommandLine
- SetMasterPreferencesForTest
- SetUp
- MaskExpectedImportState
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- SetUpCommandLine
- IN_PROC_BROWSER_TEST_P
#include <string>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/prefs/pref_service.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/component_loader.h"
#include "chrome/browser/first_run/first_run.h"
#include "chrome/browser/importer/importer_list.h"
#include "chrome/browser/prefs/chrome_pref_service_factory.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/test_launcher.h"
#include "testing/gtest/include/gtest/gtest.h"
typedef InProcessBrowserTest FirstRunBrowserTest;
IN_PROC_BROWSER_TEST_F(FirstRunBrowserTest, SetShowFirstRunBubblePref) {
EXPECT_TRUE(g_browser_process->local_state()->FindPreference(
prefs::kShowFirstRunBubbleOption));
EXPECT_EQ(first_run::FIRST_RUN_BUBBLE_DONT_SHOW,
g_browser_process->local_state()->GetInteger(
prefs::kShowFirstRunBubbleOption));
EXPECT_TRUE(first_run::SetShowFirstRunBubblePref(
first_run::FIRST_RUN_BUBBLE_SHOW));
ASSERT_TRUE(g_browser_process->local_state()->FindPreference(
prefs::kShowFirstRunBubbleOption));
EXPECT_EQ(first_run::FIRST_RUN_BUBBLE_SHOW,
g_browser_process->local_state()->GetInteger(
prefs::kShowFirstRunBubbleOption));
EXPECT_TRUE(first_run::SetShowFirstRunBubblePref(
first_run::FIRST_RUN_BUBBLE_DONT_SHOW));
EXPECT_EQ(first_run::FIRST_RUN_BUBBLE_DONT_SHOW,
g_browser_process->local_state()->GetInteger(
prefs::kShowFirstRunBubbleOption));
EXPECT_TRUE(first_run::SetShowFirstRunBubblePref(
first_run::FIRST_RUN_BUBBLE_SUPPRESS));
EXPECT_EQ(first_run::FIRST_RUN_BUBBLE_SUPPRESS,
g_browser_process->local_state()->GetInteger(
prefs::kShowFirstRunBubbleOption));
EXPECT_TRUE(first_run::SetShowFirstRunBubblePref(
first_run::FIRST_RUN_BUBBLE_SHOW));
EXPECT_EQ(first_run::FIRST_RUN_BUBBLE_SUPPRESS,
g_browser_process->local_state()->GetInteger(
prefs::kShowFirstRunBubbleOption));
}
IN_PROC_BROWSER_TEST_F(FirstRunBrowserTest, SetShouldShowWelcomePage) {
EXPECT_FALSE(first_run::ShouldShowWelcomePage());
first_run::SetShouldShowWelcomePage();
EXPECT_TRUE(first_run::ShouldShowWelcomePage());
EXPECT_FALSE(first_run::ShouldShowWelcomePage());
}
#if !defined(OS_CHROMEOS)
namespace {
class FirstRunMasterPrefsBrowserTestBase : public InProcessBrowserTest {
public:
FirstRunMasterPrefsBrowserTestBase() {}
protected:
virtual void SetUp() OVERRIDE {
ASSERT_TRUE(text_.get());
ASSERT_TRUE(base::CreateTemporaryFile(&prefs_file_));
EXPECT_TRUE(base::WriteFile(prefs_file_, text_->c_str(), text_->size()));
first_run::SetMasterPrefsPathForTesting(prefs_file_);
InProcessBrowserTest::SetUp();
}
virtual void TearDown() OVERRIDE {
EXPECT_TRUE(base::DeleteFile(prefs_file_, false));
InProcessBrowserTest::TearDown();
}
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
InProcessBrowserTest::SetUpCommandLine(command_line);
command_line->AppendSwitch(switches::kForceFirstRun);
EXPECT_EQ(first_run::AUTO_IMPORT_NONE, first_run::auto_import_state());
extensions::ComponentLoader::EnableBackgroundExtensionsForTesting();
}
void SetMasterPreferencesForTest(const char text[]) {
text_.reset(new std::string(text));
}
private:
base::FilePath prefs_file_;
scoped_ptr<std::string> text_;
DISALLOW_COPY_AND_ASSIGN(FirstRunMasterPrefsBrowserTestBase);
};
template<const char Text[]>
class FirstRunMasterPrefsBrowserTestT
: public FirstRunMasterPrefsBrowserTestBase {
public:
FirstRunMasterPrefsBrowserTestT() {}
protected:
virtual void SetUp() OVERRIDE {
SetMasterPreferencesForTest(Text);
FirstRunMasterPrefsBrowserTestBase::SetUp();
}
private:
DISALLOW_COPY_AND_ASSIGN(FirstRunMasterPrefsBrowserTestT);
};
int MaskExpectedImportState(int expected_import_state) {
scoped_refptr<ImporterList> importer_list(new ImporterList());
importer_list->DetectSourceProfilesHack(
g_browser_process->GetApplicationLocale(), false);
int source_profile_count = importer_list->count();
#if defined(OS_WIN)
EXPECT_GT(source_profile_count, 0);
#endif
if (source_profile_count == 0)
return expected_import_state & ~first_run::AUTO_IMPORT_PROFILE_IMPORTED;
return expected_import_state;
}
}
extern const char kImportDefault[] =
"{\n"
"}\n";
typedef FirstRunMasterPrefsBrowserTestT<kImportDefault>
FirstRunMasterPrefsImportDefault;
#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_MACOSX) || defined(OS_LINUX))
#define MAYBE_ImportDefault DISABLED_ImportDefault
#else
#define MAYBE_ImportDefault ImportDefault
#endif
IN_PROC_BROWSER_TEST_F(FirstRunMasterPrefsImportDefault, MAYBE_ImportDefault) {
int auto_import_state = first_run::auto_import_state();
EXPECT_EQ(MaskExpectedImportState(first_run::AUTO_IMPORT_CALLED |
first_run::AUTO_IMPORT_PROFILE_IMPORTED),
auto_import_state);
}
extern const char kImportBookmarksFile[] =
"{\n"
" \"distribution\": {\n"
" \"import_bookmarks_from_file\": \"/foo/doesntexists.wtv\"\n"
" }\n"
"}\n";
typedef FirstRunMasterPrefsBrowserTestT<kImportBookmarksFile>
FirstRunMasterPrefsImportBookmarksFile;
#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_MACOSX) || defined(OS_LINUX))
#define MAYBE_ImportBookmarksFile DISABLED_ImportBookmarksFile
#else
#define MAYBE_ImportBookmarksFile ImportBookmarksFile
#endif
IN_PROC_BROWSER_TEST_F(FirstRunMasterPrefsImportBookmarksFile,
MAYBE_ImportBookmarksFile) {
int auto_import_state = first_run::auto_import_state();
EXPECT_EQ(
MaskExpectedImportState(first_run::AUTO_IMPORT_CALLED |
first_run::AUTO_IMPORT_PROFILE_IMPORTED |
first_run::AUTO_IMPORT_BOOKMARKS_FILE_IMPORTED),
auto_import_state);
}
extern const char kImportNothing[] =
"{\n"
" \"distribution\": {\n"
" \"import_bookmarks\": false,\n"
" \"import_history\": false,\n"
" \"import_home_page\": false,\n"
" \"import_search_engine\": false\n"
" }\n"
"}\n";
typedef FirstRunMasterPrefsBrowserTestT<kImportNothing>
FirstRunMasterPrefsImportNothing;
#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_MACOSX) || defined(OS_LINUX))
#define MAYBE_ImportNothingAndShowNewTabPage \
DISABLED_ImportNothingAndShowNewTabPage
#else
#define MAYBE_ImportNothingAndShowNewTabPage ImportNothingAndShowNewTabPage
#endif
IN_PROC_BROWSER_TEST_F(FirstRunMasterPrefsImportNothing,
MAYBE_ImportNothingAndShowNewTabPage) {
EXPECT_EQ(first_run::AUTO_IMPORT_CALLED, first_run::auto_import_state());
ui_test_utils::NavigateToURLWithDisposition(
browser(), GURL(chrome::kChromeUINewTabURL), CURRENT_TAB,
ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
content::WebContents* tab = browser()->tab_strip_model()->GetWebContentsAt(0);
EXPECT_EQ(1, tab->GetMaxPageID());
}
extern const char kWithTrackedPrefs[] =
"{\n"
" \"homepage\": \"example.com\",\n"
" \"homepage_is_newtabpage\": false\n"
"}\n";
class FirstRunMasterPrefsWithTrackedPreferences
: public FirstRunMasterPrefsBrowserTestT<kWithTrackedPrefs>,
public testing::WithParamInterface<std::string> {
public:
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
FirstRunMasterPrefsBrowserTestT::SetUpCommandLine(command_line);
command_line->AppendSwitchASCII(
switches::kForceFieldTrials,
std::string(chrome_prefs::internals::kSettingsEnforcementTrialName) +
"/" + GetParam() + "/");
}
};
#if defined(GOOGLE_CHROME_BUILD) && (defined(OS_MACOSX) || defined(OS_LINUX))
#define MAYBE_TrackedPreferencesSurviveFirstRun \
DISABLED_TrackedPreferencesSurviveFirstRun
#else
#define MAYBE_TrackedPreferencesSurviveFirstRun \
TrackedPreferencesSurviveFirstRun
#endif
IN_PROC_BROWSER_TEST_P(FirstRunMasterPrefsWithTrackedPreferences,
MAYBE_TrackedPreferencesSurviveFirstRun) {
const PrefService* user_prefs = browser()->profile()->GetPrefs();
EXPECT_EQ("example.com", user_prefs->GetString(prefs::kHomePage));
EXPECT_FALSE(user_prefs->GetBoolean(prefs::kHomePageIsNewTabPage));
const base::Value* default_homepage_is_ntp_value =
user_prefs->GetDefaultPrefValue(prefs::kHomePageIsNewTabPage);
ASSERT_TRUE(default_homepage_is_ntp_value != NULL);
bool default_homepage_is_ntp = false;
EXPECT_TRUE(
default_homepage_is_ntp_value->GetAsBoolean(&default_homepage_is_ntp));
EXPECT_TRUE(default_homepage_is_ntp);
}
INSTANTIATE_TEST_CASE_P(
FirstRunMasterPrefsWithTrackedPreferencesInstance,
FirstRunMasterPrefsWithTrackedPreferences,
testing::Values(
chrome_prefs::internals::kSettingsEnforcementGroupNoEnforcement,
chrome_prefs::internals::kSettingsEnforcementGroupEnforceOnload,
chrome_prefs::internals::kSettingsEnforcementGroupEnforceAlways,
chrome_prefs::internals::
kSettingsEnforcementGroupEnforceAlwaysWithExtensions));
#endif