1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/drive/drive_notification_manager_factory.h" 6 7#include "base/command_line.h" 8#include "base/compiler_specific.h" 9#include "chrome/browser/chromeos/profiles/profile_helper.h" 10#include "chrome/browser/profiles/profile.h" 11#include "chrome/common/chrome_switches.h" 12#include "chrome/test/base/in_process_browser_test.h" 13#include "chromeos/chromeos_switches.h" 14#include "chromeos/login/user_names.h" 15#include "components/user_manager/user_manager.h" 16#include "testing/gtest/include/gtest/gtest.h" 17 18namespace drive { 19 20class DriveNotificationManagerFactoryLoginScreenBrowserTest 21 : public InProcessBrowserTest { 22 protected: 23 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 24 command_line->AppendSwitch(chromeos::switches::kLoginManager); 25 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); 26 } 27}; 28 29// Verify that no DriveNotificationManager is instantiated for the sign-in 30// profile on the login screen. 31IN_PROC_BROWSER_TEST_F(DriveNotificationManagerFactoryLoginScreenBrowserTest, 32 NoDriveNotificationManager) { 33 Profile* signin_profile = 34 chromeos::ProfileHelper::GetSigninProfile()->GetOriginalProfile(); 35 EXPECT_FALSE(DriveNotificationManagerFactory::FindForBrowserContext( 36 signin_profile)); 37} 38 39class DriveNotificationManagerFactoryGuestBrowserTest 40 : public InProcessBrowserTest { 41 protected: 42 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 43 command_line->AppendSwitch(chromeos::switches::kGuestSession); 44 command_line->AppendSwitch(::switches::kIncognito); 45 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user"); 46 command_line->AppendSwitchASCII(chromeos::switches::kLoginUser, 47 chromeos::login::kGuestUserName); 48 } 49}; 50 51// Verify that no DriveNotificationManager is instantiated for the sign-in 52// profile or the guest profile while a guest session is in progress. 53IN_PROC_BROWSER_TEST_F(DriveNotificationManagerFactoryGuestBrowserTest, 54 NoDriveNotificationManager) { 55 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 56 EXPECT_TRUE(user_manager->IsLoggedInAsGuest()); 57 Profile* guest_profile = 58 chromeos::ProfileHelper::Get() 59 ->GetProfileByUserUnsafe(user_manager->GetActiveUser()) 60 ->GetOriginalProfile(); 61 Profile* signin_profile = 62 chromeos::ProfileHelper::GetSigninProfile()->GetOriginalProfile(); 63 EXPECT_FALSE(DriveNotificationManagerFactory::FindForBrowserContext( 64 guest_profile)); 65 EXPECT_FALSE(DriveNotificationManagerFactory::FindForBrowserContext( 66 signin_profile)); 67} 68 69} // namespace drive 70