blob: fa512236853cab753739cc5ad9362feccdcf8d31 [file] [log] [blame]
// Copyright 2019 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 WEBLAYER_BROWSER_BROWSER_MAIN_PARTS_IMPL_H_
#define WEBLAYER_BROWSER_BROWSER_MAIN_PARTS_IMPL_H_
#include <memory>
#include "base/macros.h"
#include "base/metrics/field_trial.h"
#include "build/build_config.h"
#include "components/embedder_support/android/metrics/memory_metrics_logger.h"
#include "content/public/browser/browser_main_parts.h"
#include "content/public/common/main_function_params.h"
class PrefService;
namespace performance_manager {
class PerformanceManagerLifetime;
}
namespace weblayer {
class BrowserProcess;
struct MainParams;
class BrowserMainPartsImpl : public content::BrowserMainParts {
public:
BrowserMainPartsImpl(MainParams* params,
const content::MainFunctionParams& main_function_params,
std::unique_ptr<PrefService> local_state);
~BrowserMainPartsImpl() override;
// BrowserMainParts overrides.
int PreCreateThreads() override;
int PreEarlyInitialization() override;
void PreMainMessageLoopStart() override;
void PostCreateThreads() override;
int PreMainMessageLoopRun() override;
void WillRunMainMessageLoop(
std::unique_ptr<base::RunLoop>& run_loop) override;
void PostMainMessageLoopRun() override;
private:
MainParams* params_;
std::unique_ptr<BrowserProcess> browser_process_;
std::unique_ptr<performance_manager::PerformanceManagerLifetime>
performance_manager_lifetime_;
#if defined(OS_ANDROID)
std::unique_ptr<metrics::MemoryMetricsLogger> memory_metrics_logger_;
#endif // defined(OS_ANDROID)
// For running weblayer_browsertests.
const content::MainFunctionParams main_function_params_;
bool run_message_loop_ = true;
// Ownership of this moves to BrowserProcess. See
// ContentBrowserClientImpl::local_state_ for details.
std::unique_ptr<PrefService> local_state_;
DISALLOW_COPY_AND_ASSIGN(BrowserMainPartsImpl);
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_BROWSER_MAIN_PARTS_IMPL_H_