// 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_