blob: 0ae662f0ccbfa0e387f485609b719eae724904df [file] [log] [blame]
Avi Drissmanda6cecbc2022-09-07 18:10:301// Copyright 2012 The Chromium Authors
[email protected]28c3eeb2012-10-15 05:47:532// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]eb5c9682013-03-04 02:55:005#ifndef APPS_APP_RESTORE_SERVICE_H_
6#define APPS_APP_RESTORE_SERVICE_H_
[email protected]28c3eeb2012-10-15 05:47:537
[email protected]c2e2b6d2013-01-22 02:23:298#include <string>
[email protected]eb5c9682013-03-04 02:55:009#include <vector>
[email protected]c2e2b6d2013-01-22 02:23:2910
[email protected]4b7111f22013-06-18 14:22:1211#include "apps/app_lifetime_monitor.h"
Keishi Hattori0e45c022021-11-27 09:25:5212#include "base/memory/raw_ptr.h"
[email protected]12b7af32014-03-13 05:28:2013#include "components/keyed_service/core/keyed_service.h"
hashimotoad3c6872014-08-29 09:46:5714#include "extensions/browser/app_window/app_window_registry.h"
[email protected]28c3eeb2012-10-15 05:47:5315
[email protected]b8816a42013-02-27 07:59:0016namespace extensions {
17class Extension;
[email protected]b897ff82013-02-27 19:50:1318}
19
michaelpg4d80e562017-04-04 01:48:1420namespace content {
21class BrowserContext;
22}
[email protected]b897ff82013-02-27 19:50:1323
[email protected]c2e2b6d2013-01-22 02:23:2924namespace apps {
[email protected]28c3eeb2012-10-15 05:47:5325
26// Tracks what apps need to be restarted when the browser restarts.
[email protected]12b7af32014-03-13 05:28:2027class AppRestoreService : public KeyedService,
[email protected]4b7111f22013-06-18 14:22:1228 public AppLifetimeMonitor::Observer {
[email protected]28c3eeb2012-10-15 05:47:5329 public:
[email protected]24ced7dc02013-04-04 08:32:3930 // Returns true if apps should be restored on the current platform, given
31 // whether this new browser process launched due to a restart.
32 static bool ShouldRestoreApps(bool is_browser_restart);
33
michaelpg4d80e562017-04-04 01:48:1434 explicit AppRestoreService(content::BrowserContext* context);
David Bienvenub4b5b572020-09-28 00:49:2735 AppRestoreService(const AppRestoreService&) = delete;
36 AppRestoreService& operator=(const AppRestoreService&) = delete;
[email protected]28c3eeb2012-10-15 05:47:5337
[email protected]119454622012-10-18 09:48:3238 // Restart apps that need to be restarted and clear the "running" preference
39 // from apps to prevent them being restarted in subsequent restarts.
[email protected]300ba0c42012-12-06 06:57:1740 void HandleStartup(bool should_restore_apps);
[email protected]28c3eeb2012-10-15 05:47:5341
[email protected]a2886e8b2013-06-08 05:15:0242 // Returns whether this extension is running or, at startup, whether it was
43 // running when Chrome was last terminated.
44 bool IsAppRestorable(const std::string& extension_id);
45
michaelpg2fc6af92017-01-13 19:54:1846 // Called to notify that the application has begun to exit.
47 void OnApplicationTerminating();
48
michaelpg4d80e562017-04-04 01:48:1449 static AppRestoreService* Get(content::BrowserContext* context);
[email protected]a2886e8b2013-06-08 05:15:0250
[email protected]28c3eeb2012-10-15 05:47:5351 private:
[email protected]4b7111f22013-06-18 14:22:1252 // AppLifetimeMonitor::Observer.
michaelpg4d80e562017-04-04 01:48:1453 void OnAppStart(content::BrowserContext* context,
54 const std::string& app_id) override;
55 void OnAppActivated(content::BrowserContext* context,
56 const std::string& app_id) override;
57 void OnAppDeactivated(content::BrowserContext* context,
58 const std::string& app_id) override;
59 void OnAppStop(content::BrowserContext* context,
60 const std::string& app_id) override;
[email protected]771c8d272013-05-17 09:47:4061
[email protected]12b7af32014-03-13 05:28:2062 // KeyedService.
dcheng2f5be412014-10-22 01:46:0863 void Shutdown() override;
[email protected]771c8d272013-05-17 09:47:4064
[email protected]28c3eeb2012-10-15 05:47:5365 void RecordAppStart(const std::string& extension_id);
66 void RecordAppStop(const std::string& extension_id);
[email protected]4b7111f22013-06-18 14:22:1267 void RecordAppActiveState(const std::string& id, bool is_active);
[email protected]771c8d272013-05-17 09:47:4068
[email protected]961745f2013-05-25 14:09:2469 void RestoreApp(const extensions::Extension* extension);
[email protected]28c3eeb2012-10-15 05:47:5370
[email protected]4b7111f22013-06-18 14:22:1271 void StartObservingAppLifetime();
72 void StopObservingAppLifetime();
[email protected]771c8d272013-05-17 09:47:4073
Keishi Hattori0e45c022021-11-27 09:25:5274 raw_ptr<content::BrowserContext> context_;
[email protected]28c3eeb2012-10-15 05:47:5375};
76
[email protected]c2e2b6d2013-01-22 02:23:2977} // namespace apps
[email protected]28c3eeb2012-10-15 05:47:5378
[email protected]eb5c9682013-03-04 02:55:0079#endif // APPS_APP_RESTORE_SERVICE_H_