1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef ANDROID_WEBVIEW_BROWSER_AW_BROWSER_MAIN_PARTS_H_ 6 #define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_MAIN_PARTS_H_ 7 8 #include <memory> 9 10 #include "android_webview/browser/aw_browser_process.h" 11 #include "base/compiler_specific.h" 12 #include "base/macros.h" 13 #include "base/task/single_thread_task_executor.h" 14 #include "content/public/browser/browser_main_parts.h" 15 16 namespace metrics { 17 class MemoryMetricsLogger; 18 } 19 20 namespace android_webview { 21 22 class AwBrowserProcess; 23 class AwContentBrowserClient; 24 25 class AwBrowserMainParts : public content::BrowserMainParts { 26 public: 27 explicit AwBrowserMainParts(AwContentBrowserClient* browser_client); 28 ~AwBrowserMainParts() override; 29 30 // Overriding methods from content::BrowserMainParts. 31 int PreEarlyInitialization() override; 32 int PreCreateThreads() override; 33 void PreMainMessageLoopRun() override; 34 bool MainMessageLoopRun(int* result_code) override; 35 void PostCreateThreads() override; 36 37 private: 38 // Android specific UI SingleThreadTaskExecutor. 39 std::unique_ptr<base::SingleThreadTaskExecutor> main_task_executor_; 40 41 AwContentBrowserClient* browser_client_; 42 43 std::unique_ptr<metrics::MemoryMetricsLogger> metrics_logger_; 44 45 std::unique_ptr<AwBrowserProcess> browser_process_; 46 47 DISALLOW_COPY_AND_ASSIGN(AwBrowserMainParts); 48 }; 49 50 } // namespace android_webview 51 52 #endif // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_MAIN_PARTS_H_ 53