chromium/chrome/browser/chrome_browser_main_android.h

// 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_ANDROID_H_
#define CHROME_BROWSER_CHROME_BROWSER_MAIN_ANDROID_H_

#include <memory>

#include "base/android/scoped_java_ref.h"
#include "base/functional/callback_helpers.h"
#include "chrome/browser/chrome_browser_main.h"

namespace crash_reporter {
class ChildExitObserver;
}

class ChromeBrowserMainPartsAndroid : public ChromeBrowserMainParts {
 public:
  ChromeBrowserMainPartsAndroid(bool is_integration_test,
                                StartupData* startup_data);

  ChromeBrowserMainPartsAndroid(const ChromeBrowserMainPartsAndroid&) = delete;
  ChromeBrowserMainPartsAndroid& operator=(
      const ChromeBrowserMainPartsAndroid&) = delete;

  ~ChromeBrowserMainPartsAndroid() override;

  // content::BrowserMainParts overrides.
  int PreCreateThreads() override;
  void PostProfileInit(Profile* profile, bool is_initial_profile) override;
  int PreEarlyInitialization() override;

  // ChromeBrowserMainParts overrides.
  void PostBrowserStart() override;
  void ShowMissingLocaleMessageBox() override;

 private:
  std::unique_ptr<crash_reporter::ChildExitObserver> child_exit_observer_;
  // Owns the Java ChromeBackupWatcher object and invokes destroy() on
  // destruction.
  base::ScopedClosureRunner backup_watcher_runner_;
};

#endif  // CHROME_BROWSER_CHROME_BROWSER_MAIN_ANDROID_H_