| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROME_BROWSER_MAIN_MAC_H_ |
| #define CHROME_BROWSER_CHROME_BROWSER_MAIN_MAC_H_ |
| |
| #include <memory> |
| |
| #include "chrome/browser/chrome_browser_main_posix.h" |
| #include "chrome/browser/mac/code_sign_clone_manager.h" |
| |
| class PlatformAuthPolicyObserver; |
| |
| namespace mac_metrics { |
| class Metrics; |
| } |
| |
| class ChromeBrowserMainPartsMac : public ChromeBrowserMainPartsPosix { |
| public: |
| ChromeBrowserMainPartsMac(bool is_integration_test, |
| StartupData* startup_data); |
| |
| ChromeBrowserMainPartsMac(const ChromeBrowserMainPartsMac&) = delete; |
| ChromeBrowserMainPartsMac& operator=(const ChromeBrowserMainPartsMac&) = |
| delete; |
| |
| ~ChromeBrowserMainPartsMac() override; |
| |
| // BrowserParts overrides. |
| int PreEarlyInitialization() override; |
| void PreCreateMainMessageLoop() override; |
| void PostCreateMainMessageLoop() override; |
| void PreProfileInit() override; |
| void PostProfileInit(Profile* profile, bool is_initial_profile) override; |
| void PostMainMessageLoopRun() override; |
| |
| // Perform platform-specific work that needs to be done after the main event |
| // loop has ended. The embedder must be sure to call this. |
| static void DidEndMainMessageLoop(); |
| |
| private: |
| // Records mac related metrics. Some metrics are recorded on startup, some |
| // are recorded later in response to an events. |
| std::unique_ptr<mac_metrics::Metrics> metrics_; |
| |
| // Prevent code sign verification issues of the running instance of Chrome |
| // when it has been updated on disk. CodeSignCloneManager does this by |
| // creating a temporary clone of the on-disk app including a hard link of the |
| // main executable during browser startup. The clone and hard link keep files |
| // covered by the code signature reachable on the filesystem for dynamic and |
| // static verification. |
| code_sign_clone_manager::CodeSignCloneManager code_sign_clone_manager_; |
| |
| // Applies enterprise policies for platform auth SSO. |
| std::unique_ptr<PlatformAuthPolicyObserver> platform_auth_policy_observer_; |
| }; |
| |
| #endif // CHROME_BROWSER_CHROME_BROWSER_MAIN_MAC_H_ |