| // Copyright 2022 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef CHROME_BROWSER_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_ | 
 | #define CHROME_BROWSER_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_ | 
 |  | 
 | #include "base/callback_list.h" | 
 | #include "base/sequence_checker.h" | 
 | #include "chrome/browser/browser_process_platform_part_base.h" | 
 | #include "chrome/browser/ui/browser_list_observer.h" | 
 |  | 
 | class Browser; | 
 |  | 
 | class BrowserProcessPlatformPartChromeOS | 
 |     : public BrowserProcessPlatformPartBase { | 
 |  public: | 
 |   BrowserProcessPlatformPartChromeOS(); | 
 |  | 
 |   BrowserProcessPlatformPartChromeOS( | 
 |       const BrowserProcessPlatformPartChromeOS&) = delete; | 
 |   BrowserProcessPlatformPartChromeOS& operator=( | 
 |       const BrowserProcessPlatformPartChromeOS&) = delete; | 
 |  | 
 |   ~BrowserProcessPlatformPartChromeOS() override; | 
 |  | 
 |  protected: | 
 |   // Returns true if we can restore URLs for `profile`. Restoring URLs should | 
 |   // only be allowed for regular signed-in users. This is currently virtual as | 
 |   // lacros-chrome and ash-chrome check this in different ways. | 
 |   // TODO(tluk): Have both ash-chrome and lacros-chrome share the same profile | 
 |   // check code. | 
 |   virtual bool CanRestoreUrlsForProfile(const Profile* profile) const; | 
 |  | 
 |  private: | 
 |   // An observer that restores urls based on the on startup setting after a new | 
 |   // browser is added to the BrowserList. | 
 |   class BrowserRestoreObserver : public BrowserListObserver { | 
 |    public: | 
 |     explicit BrowserRestoreObserver(const BrowserProcessPlatformPartChromeOS* | 
 |                                         browser_process_platform_part); | 
 |  | 
 |     ~BrowserRestoreObserver() override; | 
 |  | 
 |    protected: | 
 |     // BrowserListObserver: | 
 |     void OnBrowserAdded(Browser* browser) override; | 
 |  | 
 |    private: | 
 |     // Returns true, if the url defined in the on startup setting should be | 
 |     // opened. Otherwise, returns false. | 
 |     bool ShouldRestoreUrls(Browser* browser) const; | 
 |  | 
 |     // Returns true, if the url defined in the on startup setting should be | 
 |     // opened in a new browser. Otherwise, returns false. | 
 |     bool ShouldOpenUrlsInNewBrowser(Browser* browser) const; | 
 |  | 
 |     // Restores urls based on the on startup setting. | 
 |     void RestoreUrls(Browser* browser); | 
 |  | 
 |     // Called when a session is restored. | 
 |     void OnSessionRestoreDone(Profile* profile, int num_tabs_restored); | 
 |  | 
 |     const raw_ptr<const BrowserProcessPlatformPartChromeOS> | 
 |         browser_process_platform_part_; | 
 |  | 
 |     base::CallbackListSubscription on_session_restored_callback_subscription_; | 
 |   }; | 
 |  | 
 |   BrowserRestoreObserver browser_restore_observer_; | 
 | }; | 
 |  | 
 | #endif  // CHROME_BROWSER_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_ |