blob: 733c48b84006afec30d2415cac04127bb8bad988 [file] [log] [blame]
// Copyright 2021 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_FUCHSIA_CHROME_BROWSER_MAIN_PARTS_FUCHSIA_H_
#define CHROME_BROWSER_FUCHSIA_CHROME_BROWSER_MAIN_PARTS_FUCHSIA_H_
#include <memory>
#include "chrome/browser/chrome_browser_main.h"
#include "chrome/browser/ui/browser_list_observer.h"
namespace base {
class ProcessLifecycle;
}
class ScopedKeepAlive;
class ElementManagerImpl;
class ChromeBrowserMainPartsFuchsia : public ChromeBrowserMainParts,
public BrowserListObserver {
public:
ChromeBrowserMainPartsFuchsia(bool is_integration_test,
StartupData* startup_data);
ChromeBrowserMainPartsFuchsia(const ChromeBrowserMainPartsFuchsia&) = delete;
ChromeBrowserMainPartsFuchsia& operator=(
const ChromeBrowserMainPartsFuchsia&) = delete;
~ChromeBrowserMainPartsFuchsia() override;
// ChromeBrowserMainParts overrides.
void ShowMissingLocaleMessageBox() override;
// content::BrowserMainParts overrides.
int PreEarlyInitialization() override;
void PostCreateMainMessageLoop() override;
int PreMainMessageLoopRun() override;
private:
class ViewPresenter;
// BrowserListObserver implementation.
void OnBrowserAdded(Browser* browser) override;
// Instantiated when running in production, to allow the framework to
// request graceful teardown (e.g. during session logout or reboot).
std::unique_ptr<base::ProcessLifecycle> lifecycle_;
// Implements the ElementManager protocol, used by the shell to request that
// Chrome re-open the browsing session, or open a new window in the current
// session.
std::unique_ptr<ElementManagerImpl> element_manager_;
// Keeps Chrome running in the background, ready to service ElementManager
// requests, until explicitly stopped by the framework (see above).
std::unique_ptr<ScopedKeepAlive> keep_alive_;
// Implements display of top-level Ozone windows via the GraphicalPresenter
// service.
std::unique_ptr<ViewPresenter> view_presenter_;
};
#endif // CHROME_BROWSER_FUCHSIA_CHROME_BROWSER_MAIN_PARTS_FUCHSIA_H_