Home | History | Annotate | Download | only in autotest_private
      1 // Copyright (c) 2012 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/extensions/api/autotest_private/autotest_private_api.h"
      6 
      7 #include "base/strings/string_number_conversions.h"
      8 #include "chrome/browser/extensions/api/autotest_private/autotest_private_api_factory.h"
      9 #include "chrome/browser/extensions/extension_function_registry.h"
     10 #include "chrome/browser/lifetime/application_lifetime.h"
     11 #include "chrome/common/extensions/api/autotest_private.h"
     12 
     13 #if defined(OS_CHROMEOS)
     14 #include "chrome/browser/chromeos/login/screen_locker.h"
     15 #include "chrome/browser/chromeos/login/user_manager.h"
     16 #endif
     17 
     18 namespace extensions {
     19 
     20 bool AutotestPrivateLogoutFunction::RunImpl() {
     21   DVLOG(1) << "AutotestPrivateLogoutFunction";
     22   if (!AutotestPrivateAPIFactory::GetForProfile(profile())->test_mode())
     23     chrome::AttemptUserExit();
     24   return true;
     25 }
     26 
     27 bool AutotestPrivateRestartFunction::RunImpl() {
     28   DVLOG(1) << "AutotestPrivateRestartFunction";
     29   if (!AutotestPrivateAPIFactory::GetForProfile(profile())->test_mode())
     30     chrome::AttemptRestart();
     31   return true;
     32 }
     33 
     34 bool AutotestPrivateShutdownFunction::RunImpl() {
     35   scoped_ptr<api::autotest_private::Shutdown::Params> params(
     36       api::autotest_private::Shutdown::Params::Create(*args_));
     37   EXTENSION_FUNCTION_VALIDATE(params.get());
     38 
     39   DVLOG(1) << "AutotestPrivateShutdownFunction " << params->force;
     40 
     41 #if defined(OS_CHROMEOS)
     42   if (params->force) {
     43     if (!AutotestPrivateAPIFactory::GetForProfile(profile())->test_mode())
     44       chrome::ExitCleanly();
     45     return true;
     46   }
     47 #endif
     48   if (!AutotestPrivateAPIFactory::GetForProfile(profile())->test_mode())
     49     chrome::AttemptExit();
     50   return true;
     51 }
     52 
     53 bool AutotestPrivateLoginStatusFunction::RunImpl() {
     54   DVLOG(1) << "AutotestPrivateLoginStatusFunction";
     55 
     56   base::DictionaryValue* result(new base::DictionaryValue);
     57 #if defined(OS_CHROMEOS)
     58   const chromeos::UserManager* user_manager = chromeos::UserManager::Get();
     59   const bool is_screen_locked =
     60       !!chromeos::ScreenLocker::default_screen_locker();
     61 
     62   if (user_manager) {
     63     result->SetBoolean("isLoggedIn", user_manager->IsUserLoggedIn());
     64     result->SetBoolean("isOwner", user_manager->IsCurrentUserOwner());
     65     result->SetBoolean("isScreenLocked", is_screen_locked);
     66     if (user_manager->IsUserLoggedIn()) {
     67       result->SetBoolean("isRegularUser",
     68                          user_manager->IsLoggedInAsRegularUser());
     69       result->SetBoolean("isGuest", user_manager->IsLoggedInAsGuest());
     70       result->SetBoolean("isKiosk", user_manager->IsLoggedInAsKioskApp());
     71 
     72       const chromeos::User* user = user_manager->GetLoggedInUser();
     73       result->SetString("email", user->email());
     74       result->SetString("displayEmail", user->display_email());
     75 
     76       std::string user_image;
     77       switch (user->image_index()) {
     78         case chromeos::User::kExternalImageIndex:
     79           user_image = "file";
     80           break;
     81 
     82         case chromeos::User::kProfileImageIndex:
     83           user_image = "profile";
     84           break;
     85 
     86         default:
     87           user_image = base::IntToString(user->image_index());
     88           break;
     89       }
     90       result->SetString("userImage", user_image);
     91     }
     92   }
     93 #endif
     94 
     95   SetResult(result);
     96   return true;
     97 }
     98 
     99 AutotestPrivateAPI::AutotestPrivateAPI() : test_mode_(false) {
    100 }
    101 
    102 AutotestPrivateAPI::~AutotestPrivateAPI() {
    103 }
    104 
    105 }  // namespace extensions
    106