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