Index: chromecast/shell/app/cast_main_delegate.cc |
diff --git a/chromecast/shell/app/cast_main_delegate.cc b/chromecast/shell/app/cast_main_delegate.cc |
index 1fb2ad773a4aa763e804c46b4fa40983bd7070a7..884464ff46327a71ebfd5ce173462e32efce7b08 100644 |
--- a/chromecast/shell/app/cast_main_delegate.cc |
+++ b/chromecast/shell/app/cast_main_delegate.cc |
@@ -4,12 +4,16 @@ |
#include "chromecast/shell/app/cast_main_delegate.h" |
+#include "base/cpu.h" |
#include "base/logging.h" |
#include "base/path_service.h" |
+#include "base/posix/global_descriptors.h" |
#include "chromecast/common/cast_paths.h" |
#include "chromecast/common/cast_resource_delegate.h" |
+#include "chromecast/common/global_descriptors.h" |
#include "chromecast/shell/browser/cast_content_browser_client.h" |
#include "chromecast/shell/renderer/cast_content_renderer_client.h" |
+#include "content/public/browser/browser_main_runner.h" |
#include "content/public/common/content_switches.h" |
#include "ui/base/resource/resource_bundle.h" |
@@ -23,26 +27,72 @@ CastMainDelegate::~CastMainDelegate() { |
} |
bool CastMainDelegate::BasicStartupComplete(int* exit_code) { |
+ RegisterPathProvider(); |
+ |
logging::LoggingSettings settings; |
+#if defined(OS_ANDROID) |
+ base::FilePath log_file; |
+ PathService::Get(FILE_CAST_ANDROID_LOG, &log_file); |
+ settings.logging_dest = logging::LOG_TO_ALL; |
+ settings.log_file = log_file.value().c_str(); |
+ settings.delete_old = logging::DELETE_OLD_LOG_FILE; |
+#else |
settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; |
+#endif // defined(OS_ANDROID) |
logging::InitLogging(settings); |
// Time, process, and thread ID are available through logcat. |
logging::SetLogItems(true, true, false, false); |
- RegisterPathProvider(); |
- |
content::SetContentClient(&content_client_); |
return false; |
} |
void CastMainDelegate::PreSandboxStartup() { |
+#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX)) |
+ // Create an instance of the CPU class to parse /proc/cpuinfo and cache |
+ // cpu_brand info. |
+ base::CPU cpu_info; |
lcwu1
2014/08/27 16:47:46
This variable doesn't appear to be used.
gunsch
2014/08/28 00:12:09
True, it is not used---but instantiating it has ma
lcwu1
2014/08/28 02:40:29
I see. In that case I think we should add more com
gunsch
2014/08/28 02:59:26
Done.
|
+#endif |
+ |
InitializeResourceBundle(); |
} |
+int CastMainDelegate::RunProcess( |
+ const std::string& process_type, |
+ const content::MainFunctionParams& main_function_params) { |
+#if defined(OS_ANDROID) |
+ if (!process_type.empty()) |
+ return -1; |
+ |
+ // Note: Android must handle running its own browser process. |
+ // See ChromeMainDelegateAndroid::RunProcess. |
+ browser_runner_.reset(content::BrowserMainRunner::Create()); |
+ return browser_runner_->Initialize(main_function_params); |
+#else |
+ return -1; |
+#endif // defined(OS_ANDROID) |
+} |
+ |
+#if !defined(OS_ANDROID) |
byungchul
2014/08/27 23:19:17
Don't you have to guard it in .h as well?
gunsch
2014/08/28 00:12:09
It is already?
|
void CastMainDelegate::ZygoteForked() { |
} |
+#endif // defined(OS_ANDROID) |
void CastMainDelegate::InitializeResourceBundle() { |
+#if defined(OS_ANDROID) |
+ // On Android, the renderer runs with a different UID and can never access |
+ // the file system. Use the file descriptor passed in at launch time. |
+ int pak_fd = |
+ base::GlobalDescriptors::GetInstance()->MaybeGet(kAndroidPakDescriptor); |
+ if (pak_fd >= 0) { |
+ ui::ResourceBundle::InitSharedInstanceWithPakFileRegion( |
+ base::File(pak_fd), base::MemoryMappedFile::Region::kWholeFile); |
+ ui::ResourceBundle::GetSharedInstance().AddDataPackFromFile( |
+ base::File(pak_fd), ui::SCALE_FACTOR_100P); |
+ return; |
+ } |
+#endif |
+ |
resource_delegate_.reset(new CastResourceDelegate()); |
// TODO(gunsch): Use LOAD_COMMON_RESOURCES once ResourceBundle no longer |
// hardcodes resource file names. |