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 21 namespace chrome { 22 23 void 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 31 void 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 43 bool RegisterApplicationLifetimeAndroid(JNIEnv* env) { 44 return RegisterNativesImpl(env); 45 } 46 47 } // namespace browser 48