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/lifetime/application_lifetime_android.h" 6 7#include <jni.h> 8 9#include "base/android/jni_android.h" 10#include "base/logging.h" 11#include "base/prefs/pref_service.h" 12#include "chrome/browser/browser_process.h" 13#include "chrome/browser/lifetime/application_lifetime.h" 14#include "chrome/browser/profiles/profile.h" 15#include "chrome/browser/ui/browser.h" 16#include "chrome/browser/ui/browser_list.h" 17#include "chrome/common/pref_names.h" 18#include "content/public/browser/browser_context.h" 19#include "jni/ApplicationLifetime_jni.h" 20 21namespace chrome { 22 23void AttemptRestart() { 24 // Set the flag to restart Chrome after it is shutdown. 25 PrefService* pref_service = g_browser_process->local_state(); 26 pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, true); 27 AttemptExit(); 28} 29 30 31void TerminateAndroid() { 32 bool restart = false; 33 PrefService* prefs = g_browser_process->local_state(); 34 if (prefs->HasPrefPath(prefs::kRestartLastSessionOnShutdown)) { 35 restart = prefs->GetBoolean(prefs::kRestartLastSessionOnShutdown); 36 prefs->ClearPref(prefs::kRestartLastSessionOnShutdown); 37 } 38 39 JNIEnv* env = base::android::AttachCurrentThread(); 40 Java_ApplicationLifetime_terminate(env, restart); 41} 42 43bool RegisterApplicationLifetimeAndroid(JNIEnv* env) { 44 return RegisterNativesImpl(env); 45} 46 47} // namespace browser 48