aw_browser_main_parts.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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#include "android_webview/browser/aw_browser_main_parts.h" 6 7#include "android_webview/browser/aw_browser_context.h" 8#include "android_webview/browser/aw_result_codes.h" 9#include "base/android/build_info.h" 10#include "base/android/memory_pressure_listener_android.h" 11#include "base/command_line.h" 12#include "base/files/file_path.h" 13#include "base/path_service.h" 14#include "content/public/browser/render_process_host.h" 15#include "content/public/common/content_client.h" 16#include "content/public/common/content_switches.h" 17#include "content/public/common/result_codes.h" 18#include "content/public/common/url_utils.h" 19#include "gpu/command_buffer/service/mailbox_synchronizer.h" 20#include "net/android/network_change_notifier_factory_android.h" 21#include "net/base/network_change_notifier.h" 22#include "ui/base/l10n/l10n_util_android.h" 23#include "ui/base/layout.h" 24#include "ui/base/resource/resource_bundle.h" 25#include "ui/base/ui_base_paths.h" 26 27namespace android_webview { 28 29AwBrowserMainParts::AwBrowserMainParts(AwBrowserContext* browser_context) 30 : browser_context_(browser_context) { 31} 32 33AwBrowserMainParts::~AwBrowserMainParts() { 34} 35 36void AwBrowserMainParts::PreEarlyInitialization() { 37 net::NetworkChangeNotifier::SetFactory( 38 new net::NetworkChangeNotifierFactoryAndroid()); 39 40 // Android WebView does not use default MessageLoop. It has its own 41 // Android specific MessageLoop. Also see MainMessageLoopRun. 42 DCHECK(!main_message_loop_.get()); 43 main_message_loop_.reset(new base::MessageLoopForUI); 44 base::MessageLoopForUI::current()->Start(); 45} 46 47int AwBrowserMainParts::PreCreateThreads() { 48 ui::ResourceBundle::InitSharedInstanceLocaleOnly( 49 l10n_util::GetDefaultLocale(), NULL); 50 51 base::FilePath pak_path; 52 PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_path); 53 54 ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath( 55 pak_path.AppendASCII("webviewchromium.pak"), 56 ui::SCALE_FACTOR_NONE); 57 58 base::android::MemoryPressureListenerAndroid::RegisterSystemCallback( 59 base::android::AttachCurrentThread()); 60 61 return content::RESULT_CODE_NORMAL_EXIT; 62} 63 64void AwBrowserMainParts::PreMainMessageLoopRun() { 65 if (!gpu::gles2::MailboxSynchronizer::Initialize()) { 66 CommandLine::ForCurrentProcess()->AppendSwitch( 67 switches::kDisableAccelerated2dCanvas); 68 } 69 70 browser_context_->PreMainMessageLoopRun(); 71 // This is needed for WebView Classic backwards compatibility 72 // See crbug.com/298495 73 content::SetMaxURLChars(20 * 1024 * 1024); 74} 75 76bool AwBrowserMainParts::MainMessageLoopRun(int* result_code) { 77 // Android WebView does not use default MessageLoop. It has its own 78 // Android specific MessageLoop. 79 return true; 80} 81 82} // namespace android_webview 83