summaryrefslogtreecommitdiffstats
path: root/chromecast/app
diff options
context:
space:
mode:
authorgunsch <gunsch@chromium.org>2014-10-13 16:01:45 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-13 23:02:02 +0000
commitf44ffcbebf37154f23917d058c1bb6fa295887e3 (patch)
tree02f617a75006bd4d6035966e7b79c9b7701e4a85 /chromecast/app
parentef97146f36e0e31632be0f7defebf2da4d72d360 (diff)
downloadchromium_src-f44ffcbebf37154f23917d058c1bb6fa295887e3.zip
chromium_src-f44ffcbebf37154f23917d058c1bb6fa295887e3.tar.gz
chromium_src-f44ffcbebf37154f23917d058c1bb6fa295887e3.tar.bz2
Reorganizes Chromecast code to better reflect functional dependencies.
Motivation: * chromecast/service/ directory had interplay with chromecast/shell/browser code, since the service is all run in the browser process and mildly coupled (involves starting WebContents instances, etc,). Made more sense for chromecast/service to live in chromecast/shell/browser. * chromecast/shell/ directory is needless hierarchy, since the entire chromecast/ directory represents the Chromecast content-embedder. Highlights: * chromecast/shell/{app,browser,common,renderer} --> chromecast/* * chromecast/shell/browser/resources --> chromecast/app/resources * chromecast/shell/settings --> chromecast/app/resources * chromecast/shell/android --> chromecast/browser/android * chromecast/metrics --> chromecast/browser/metrics * chromecast/service --> chromecast/browser/service R=lcwu@chromium.org,gusfernandez@chromium.org,byungchul@chromium.org TBR=xhwang@chromium.org,asvitkine@chromium.org,thestig@chromium.org,jam@chromium.org,yfriedman@chromium.org BUG=None Review URL: https://codereview.chromium.org/638803002 Cr-Commit-Position: refs/heads/master@{#299385}
Diffstat (limited to 'chromecast/app')
-rw-r--r--chromecast/app/DEPS6
-rw-r--r--chromecast/app/android/DEPS3
-rw-r--r--chromecast/app/android/cast_jni_loader.cc36
-rw-r--r--chromecast/app/cast_main.cc14
-rw-r--r--chromecast/app/cast_main_delegate.cc140
-rw-r--r--chromecast/app/cast_main_delegate.h62
-rw-r--r--chromecast/app/resources/chromecast_settings.grd167
-rw-r--r--chromecast/app/resources/chromecast_settings_am.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ar.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_bg.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_bn.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ca.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_cs.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_da.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_de.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_el.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_en-GB.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_es-419.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_es.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_et.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_fa.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_fi.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_fil.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_fr.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_gu.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_he.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_hi.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_hr.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_hu.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_id.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_it.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ja.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_kn.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ko.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_lt.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_lv.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ml.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_mr.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ms.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_nb.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_nl.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_pl.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_pt-BR.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_pt-PT.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ro.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ru.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_sk.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_sl.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_sr.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_sv.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_sw.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_ta.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_te.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_th.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_tr.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_uk.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_vi.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_zh-CN.xtb5
-rw-r--r--chromecast/app/resources/chromecast_settings_zh-TW.xtb5
-rw-r--r--chromecast/app/resources/resource_ids25
-rw-r--r--chromecast/app/resources/shell_devtools_discovery_page.html56
-rw-r--r--chromecast/app/resources/shell_resources.grd16
62 files changed, 785 insertions, 0 deletions
diff --git a/chromecast/app/DEPS b/chromecast/app/DEPS
new file mode 100644
index 0000000..835bef6
--- /dev/null
+++ b/chromecast/app/DEPS
@@ -0,0 +1,6 @@
+include_rules = [
+ "+chromecast",
+ "+components/crash",
+ "+content/public/app",
+ "+content/public/browser",
+]
diff --git a/chromecast/app/android/DEPS b/chromecast/app/android/DEPS
new file mode 100644
index 0000000..5021862
--- /dev/null
+++ b/chromecast/app/android/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+chromecast/android",
+]
diff --git a/chromecast/app/android/cast_jni_loader.cc b/chromecast/app/android/cast_jni_loader.cc
new file mode 100644
index 0000000..ed7f6ee
--- /dev/null
+++ b/chromecast/app/android/cast_jni_loader.cc
@@ -0,0 +1,36 @@
+// Copyright 2014 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.
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_registrar.h"
+#include "base/android/library_loader/library_loader_hooks.h"
+#include "base/basictypes.h"
+#include "base/debug/debugger.h"
+#include "base/logging.h"
+#include "chromecast/android/cast_jni_registrar.h"
+#include "chromecast/android/platform_jni_loader.h"
+#include "chromecast/app/cast_main_delegate.h"
+#include "content/public/app/android_library_loader_hooks.h"
+#include "content/public/app/content_main.h"
+#include "content/public/browser/android/compositor.h"
+
+// This is called by the VM when the shared library is first loaded.
+JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
+ base::android::SetLibraryLoadedHook(&content::LibraryLoaded);
+ base::android::InitVM(vm);
+ JNIEnv* env = base::android::AttachCurrentThread();
+
+ if (!base::android::RegisterLibraryLoaderEntryHook(env)) return -1;
+
+ // To be called only from the UI thread. If loading the library is done on
+ // a separate thread, this should be moved elsewhere.
+ if (!chromecast::android::RegisterJni(env)) return -1;
+ // Allow platform-specific implementations to perform more JNI registration.
+ if (!chromecast::android::PlatformRegisterJni(env)) return -1;
+
+ content::Compositor::Initialize();
+ content::SetContentMainDelegate(new chromecast::shell::CastMainDelegate);
+
+ return JNI_VERSION_1_4;
+}
diff --git a/chromecast/app/cast_main.cc b/chromecast/app/cast_main.cc
new file mode 100644
index 0000000..6c6c0b4
--- /dev/null
+++ b/chromecast/app/cast_main.cc
@@ -0,0 +1,14 @@
+// Copyright 2014 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.
+
+#include "chromecast/app/cast_main_delegate.h"
+#include "content/public/app/content_main.h"
+
+int main(int argc, const char** argv) {
+ chromecast::shell::CastMainDelegate delegate;
+ content::ContentMainParams params(&delegate);
+ params.argc = argc;
+ params.argv = argv;
+ return content::ContentMain(params);
+}
diff --git a/chromecast/app/cast_main_delegate.cc b/chromecast/app/cast_main_delegate.cc
new file mode 100644
index 0000000..78e4d55
--- /dev/null
+++ b/chromecast/app/cast_main_delegate.cc
@@ -0,0 +1,140 @@
+// Copyright 2014 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.
+
+#include "chromecast/app/cast_main_delegate.h"
+
+#include "base/command_line.h"
+#include "base/cpu.h"
+#include "base/logging.h"
+#include "base/path_service.h"
+#include "base/posix/global_descriptors.h"
+#include "chromecast/browser/cast_content_browser_client.h"
+#include "chromecast/common/cast_paths.h"
+#include "chromecast/common/cast_resource_delegate.h"
+#include "chromecast/common/global_descriptors.h"
+#include "chromecast/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"
+
+#if defined(OS_ANDROID)
+#include "chromecast/crash/android/crash_handler.h"
+#endif // defined(OS_ANDROID)
+
+namespace chromecast {
+namespace shell {
+
+CastMainDelegate::CastMainDelegate() {
+}
+
+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);
+
+ 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 the
+ // results. This data needs to be cached when file-reading is still allowed,
+ // since base::CPU expects to be callable later, when file-reading is no
+ // longer allowed.
+ base::CPU cpu_info;
+#endif
+
+ const base::CommandLine* command_line(base::CommandLine::ForCurrentProcess());
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+#if defined(OS_ANDROID)
+ base::FilePath log_file;
+ PathService::Get(FILE_CAST_ANDROID_LOG, &log_file);
+ chromecast::CrashHandler::Initialize(process_type, log_file);
+#endif // defined(OS_ANDROID)
+
+ 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)
+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 // defined(OS_ANDROID)
+
+ resource_delegate_.reset(new CastResourceDelegate());
+ // TODO(gunsch): Use LOAD_COMMON_RESOURCES once ResourceBundle no longer
+ // hardcodes resource file names.
+ ui::ResourceBundle::InitSharedInstanceWithLocale(
+ "en-US",
+ resource_delegate_.get(),
+ ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES);
+
+ base::FilePath pak_file;
+ CHECK(PathService::Get(FILE_CAST_PAK, &pak_file));
+ ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
+ pak_file,
+ ui::SCALE_FACTOR_NONE);
+}
+
+content::ContentBrowserClient* CastMainDelegate::CreateContentBrowserClient() {
+ browser_client_.reset(new CastContentBrowserClient);
+ return browser_client_.get();
+}
+
+content::ContentRendererClient*
+CastMainDelegate::CreateContentRendererClient() {
+ renderer_client_.reset(new CastContentRendererClient);
+ return renderer_client_.get();
+}
+
+} // namespace shell
+} // namespace chromecast
diff --git a/chromecast/app/cast_main_delegate.h b/chromecast/app/cast_main_delegate.h
new file mode 100644
index 0000000..d078655f
--- /dev/null
+++ b/chromecast/app/cast_main_delegate.h
@@ -0,0 +1,62 @@
+// Copyright 2014 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 CHROMECAST_APP_CAST_MAIN_DELEGATE_H_
+#define CHROMECAST_APP_CAST_MAIN_DELEGATE_H_
+
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#include "chromecast/common/cast_content_client.h"
+#include "content/public/app/content_main_delegate.h"
+
+namespace content {
+class BrowserMainRunner;
+} // namespace content
+
+namespace chromecast {
+
+class CastResourceDelegate;
+
+namespace shell {
+
+class CastContentBrowserClient;
+class CastContentRendererClient;
+
+class CastMainDelegate : public content::ContentMainDelegate {
+ public:
+ CastMainDelegate();
+ virtual ~CastMainDelegate();
+
+ // content::ContentMainDelegate implementation:
+ virtual bool BasicStartupComplete(int* exit_code) override;
+ virtual void PreSandboxStartup() override;
+ virtual int RunProcess(
+ const std::string& process_type,
+ const content::MainFunctionParams& main_function_params) override;
+#if !defined(OS_ANDROID)
+ virtual void ZygoteForked() override;
+#endif // !defined(OS_ANDROID)
+ virtual content::ContentBrowserClient* CreateContentBrowserClient() override;
+ virtual content::ContentRendererClient*
+ CreateContentRendererClient() override;
+
+ private:
+ void InitializeResourceBundle();
+
+ scoped_ptr<CastContentBrowserClient> browser_client_;
+ scoped_ptr<CastContentRendererClient> renderer_client_;
+ scoped_ptr<CastResourceDelegate> resource_delegate_;
+ CastContentClient content_client_;
+
+#if defined(OS_ANDROID)
+ scoped_ptr<content::BrowserMainRunner> browser_runner_;
+#endif // defined(OS_ANDROID)
+
+ DISALLOW_COPY_AND_ASSIGN(CastMainDelegate);
+};
+
+} // namespace shell
+} // namespace chromecast
+
+#endif // CHROMECAST_APP_CAST_MAIN_DELEGATE_H_
diff --git a/chromecast/app/resources/chromecast_settings.grd b/chromecast/app/resources/chromecast_settings.grd
new file mode 100644
index 0000000..3233be3
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings.grd
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+This file contains the strings for Chromecast settings.
+-->
+
+<grit base_dir="." latest_public_release="0" current_release="1"
+ source_lang_id="en" enc_check="möl">
+ <outputs>
+ <output filename="grit/chromecast_settings.h" type="rc_header">
+ <emit emit_type='prepend'></emit>
+ </output>
+ <output filename="chromecast_settings_am.pak" type="data_package" lang="am" />
+ <output filename="chromecast_settings_ar.pak" type="data_package" lang="ar" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_ast.pak" type="data_package" lang="ast" />
+ </if>
+ <output filename="chromecast_settings_bg.pak" type="data_package" lang="bg" />
+ <output filename="chromecast_settings_bn.pak" type="data_package" lang="bn" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_bs.pak" type="data_package" lang="bs" />
+ </if>
+ <output filename="chromecast_settings_ca.pak" type="data_package" lang="ca" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_ca@valencia.pak" type="data_package" lang="ca@valencia" />
+ </if>
+ <output filename="chromecast_settings_cs.pak" type="data_package" lang="cs" />
+ <output filename="chromecast_settings_da.pak" type="data_package" lang="da" />
+ <output filename="chromecast_settings_de.pak" type="data_package" lang="de" />
+ <output filename="chromecast_settings_el.pak" type="data_package" lang="el" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_en-AU.pak" type="data_package" lang="en-AU" />
+ </if>
+ <output filename="chromecast_settings_en-GB.pak" type="data_package" lang="en-GB" />
+ <output filename="chromecast_settings_en-US.pak" type="data_package" lang="en" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_eo.pak" type="data_package" lang="eo" />
+ </if>
+ <output filename="chromecast_settings_es.pak" type="data_package" lang="es" />
+ <output filename="chromecast_settings_es-419.pak" type="data_package" lang="es-419" />
+ <output filename="chromecast_settings_et.pak" type="data_package" lang="et" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_eu.pak" type="data_package" lang="eu" />
+ </if>
+ <output filename="chromecast_settings_fa.pak" type="data_package" lang="fa" />
+ <output filename="chromecast_settings_fake-bidi.pak" type="data_package" lang="fake-bidi" />
+ <output filename="chromecast_settings_fi.pak" type="data_package" lang="fi" />
+ <output filename="chromecast_settings_fil.pak" type="data_package" lang="fil" />
+ <output filename="chromecast_settings_fr.pak" type="data_package" lang="fr" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_gl.pak" type="data_package" lang="gl" />
+ </if>
+ <output filename="chromecast_settings_gu.pak" type="data_package" lang="gu" />
+ <output filename="chromecast_settings_he.pak" type="data_package" lang="he" />
+ <output filename="chromecast_settings_hi.pak" type="data_package" lang="hi" />
+ <output filename="chromecast_settings_hr.pak" type="data_package" lang="hr" />
+ <output filename="chromecast_settings_hu.pak" type="data_package" lang="hu" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_hy.pak" type="data_package" lang="hy" />
+ <output filename="chromecast_settings_ia.pak" type="data_package" lang="ia" />
+ </if>
+ <output filename="chromecast_settings_id.pak" type="data_package" lang="id" />
+ <output filename="chromecast_settings_it.pak" type="data_package" lang="it" />
+ <output filename="chromecast_settings_ja.pak" type="data_package" lang="ja" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_ka.pak" type="data_package" lang="ka" />
+ </if>
+ <output filename="chromecast_settings_kn.pak" type="data_package" lang="kn" />
+ <output filename="chromecast_settings_ko.pak" type="data_package" lang="ko" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_ku.pak" type="data_package" lang="ku" />
+ <output filename="chromecast_settings_kw.pak" type="data_package" lang="kw" />
+ </if>
+ <output filename="chromecast_settings_lt.pak" type="data_package" lang="lt" />
+ <output filename="chromecast_settings_lv.pak" type="data_package" lang="lv" />
+ <output filename="chromecast_settings_ml.pak" type="data_package" lang="ml" />
+ <output filename="chromecast_settings_mr.pak" type="data_package" lang="mr" />
+ <output filename="chromecast_settings_ms.pak" type="data_package" lang="ms" />
+ <output filename="chromecast_settings_nl.pak" type="data_package" lang="nl" />
+ <!-- The translation console uses 'no' for Norwegian Bokmål. It should
+ be 'nb'. -->
+ <output filename="chromecast_settings_nb.pak" type="data_package" lang="no" />
+ <output filename="chromecast_settings_pl.pak" type="data_package" lang="pl" />
+ <output filename="chromecast_settings_pt-BR.pak" type="data_package" lang="pt-BR" />
+ <output filename="chromecast_settings_pt-PT.pak" type="data_package" lang="pt-PT" />
+ <output filename="chromecast_settings_ro.pak" type="data_package" lang="ro" />
+ <output filename="chromecast_settings_ru.pak" type="data_package" lang="ru" />
+ <output filename="chromecast_settings_sk.pak" type="data_package" lang="sk" />
+ <output filename="chromecast_settings_sl.pak" type="data_package" lang="sl" />
+ <output filename="chromecast_settings_sr.pak" type="data_package" lang="sr" />
+ <output filename="chromecast_settings_sv.pak" type="data_package" lang="sv" />
+ <output filename="chromecast_settings_sw.pak" type="data_package" lang="sw" />
+ <output filename="chromecast_settings_ta.pak" type="data_package" lang="ta" />
+ <output filename="chromecast_settings_te.pak" type="data_package" lang="te" />
+ <output filename="chromecast_settings_th.pak" type="data_package" lang="th" />
+ <output filename="chromecast_settings_tr.pak" type="data_package" lang="tr" />
+ <if expr="pp_ifdef('use_third_party_translations')">
+ <output filename="chromecast_settings_ug.pak" type="data_package" lang="ug" />
+ </if>
+ <output filename="chromecast_settings_uk.pak" type="data_package" lang="uk" />
+ <output filename="chromecast_settings_vi.pak" type="data_package" lang="vi" />
+ <output filename="chromecast_settings_zh-CN.pak" type="data_package" lang="zh-CN" />
+ <output filename="chromecast_settings_zh-TW.pak" type="data_package" lang="zh-TW" />
+ </outputs>
+ <translations>
+ <file path="chromecast_settings_am.xtb" lang="am" />
+ <file path="chromecast_settings_ar.xtb" lang="ar" />
+ <file path="chromecast_settings_bg.xtb" lang="bg" />
+ <file path="chromecast_settings_bn.xtb" lang="bn" />
+ <file path="chromecast_settings_ca.xtb" lang="ca" />
+ <file path="chromecast_settings_cs.xtb" lang="cs" />
+ <file path="chromecast_settings_da.xtb" lang="da" />
+ <file path="chromecast_settings_de.xtb" lang="de" />
+ <file path="chromecast_settings_el.xtb" lang="el" />
+ <file path="chromecast_settings_en-GB.xtb" lang="en-GB" />
+ <file path="chromecast_settings_es.xtb" lang="es" />
+ <file path="chromecast_settings_es-419.xtb" lang="es-419" />
+ <file path="chromecast_settings_et.xtb" lang="et" />
+ <file path="chromecast_settings_fa.xtb" lang="fa" />
+ <file path="chromecast_settings_fi.xtb" lang="fi" />
+ <file path="chromecast_settings_fil.xtb" lang="fil" />
+ <file path="chromecast_settings_fr.xtb" lang="fr" />
+ <file path="chromecast_settings_gu.xtb" lang="gu" />
+ <file path="chromecast_settings_he.xtb" lang="he" />
+ <file path="chromecast_settings_hi.xtb" lang="hi" />
+ <file path="chromecast_settings_hr.xtb" lang="hr" />
+ <file path="chromecast_settings_hu.xtb" lang="hu" />
+ <file path="chromecast_settings_id.xtb" lang="id" />
+ <file path="chromecast_settings_it.xtb" lang="it" />
+ <file path="chromecast_settings_ja.xtb" lang="ja" />
+ <file path="chromecast_settings_kn.xtb" lang="kn" />
+ <file path="chromecast_settings_ko.xtb" lang="ko" />
+ <file path="chromecast_settings_lt.xtb" lang="lt" />
+ <file path="chromecast_settings_lv.xtb" lang="lv" />
+ <file path="chromecast_settings_ml.xtb" lang="ml" />
+ <file path="chromecast_settings_mr.xtb" lang="mr" />
+ <file path="chromecast_settings_ms.xtb" lang="ms" />
+ <file path="chromecast_settings_nl.xtb" lang="nl" />
+ <file path="chromecast_settings_nb.xtb" lang="no" />
+ <file path="chromecast_settings_pl.xtb" lang="pl" />
+ <file path="chromecast_settings_pt-BR.xtb" lang="pt-BR" />
+ <file path="chromecast_settings_pt-PT.xtb" lang="pt-PT" />
+ <file path="chromecast_settings_ro.xtb" lang="ro" />
+ <file path="chromecast_settings_ru.xtb" lang="ru" />
+ <file path="chromecast_settings_sk.xtb" lang="sk" />
+ <file path="chromecast_settings_sl.xtb" lang="sl" />
+ <file path="chromecast_settings_sr.xtb" lang="sr" />
+ <file path="chromecast_settings_sv.xtb" lang="sv" />
+ <file path="chromecast_settings_sw.xtb" lang="sw" />
+ <file path="chromecast_settings_ta.xtb" lang="ta" />
+ <file path="chromecast_settings_te.xtb" lang="te" />
+ <file path="chromecast_settings_th.xtb" lang="th" />
+ <file path="chromecast_settings_tr.xtb" lang="tr" />
+ <file path="chromecast_settings_uk.xtb" lang="uk" />
+ <file path="chromecast_settings_vi.xtb" lang="vi" />
+ <file path="chromecast_settings_zh-CN.xtb" lang="zh-CN" />
+ <file path="chromecast_settings_zh-TW.xtb" lang="zh-TW" />
+ </translations>
+ <release seq="1" allow_pseudo="false">
+ <messages fallback_to_english="true">
+ <message name="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES"
+ use_name_for_id="true">
+ en-US,en
+ </message>
+ </messages>
+ </release>
+</grit>
diff --git a/chromecast/app/resources/chromecast_settings_am.xtb b/chromecast/app/resources/chromecast_settings_am.xtb
new file mode 100644
index 0000000..2eb7f9c
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_am.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="am">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">am,en-GB,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ar.xtb b/chromecast/app/resources/chromecast_settings_ar.xtb
new file mode 100644
index 0000000..c747cfc
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ar.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ar">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ar,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_bg.xtb b/chromecast/app/resources/chromecast_settings_bg.xtb
new file mode 100644
index 0000000..9869f27
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_bg.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="bg">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">bg-BG,bg</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_bn.xtb b/chromecast/app/resources/chromecast_settings_bn.xtb
new file mode 100644
index 0000000..817c97b
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_bn.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="bn">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">bn-IN,bn,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ca.xtb b/chromecast/app/resources/chromecast_settings_ca.xtb
new file mode 100644
index 0000000..621a7a2
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ca.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ca">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ca-ES,ca</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_cs.xtb b/chromecast/app/resources/chromecast_settings_cs.xtb
new file mode 100644
index 0000000..b9e2fa7
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_cs.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="cs">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">cs-CZ,cs</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_da.xtb b/chromecast/app/resources/chromecast_settings_da.xtb
new file mode 100644
index 0000000..edc061c
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_da.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="da">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">da-DK,da,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_de.xtb b/chromecast/app/resources/chromecast_settings_de.xtb
new file mode 100644
index 0000000..3295094
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_de.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="de">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">de-DE,de,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_el.xtb b/chromecast/app/resources/chromecast_settings_el.xtb
new file mode 100644
index 0000000..a9c08ab
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_el.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="el">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">el-GR,el</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_en-GB.xtb b/chromecast/app/resources/chromecast_settings_en-GB.xtb
new file mode 100644
index 0000000..339f9c6
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_en-GB.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="en-GB">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">en-GB,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_es-419.xtb b/chromecast/app/resources/chromecast_settings_es-419.xtb
new file mode 100644
index 0000000..42c5de5
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_es-419.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="es-419">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">es-419,es</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_es.xtb b/chromecast/app/resources/chromecast_settings_es.xtb
new file mode 100644
index 0000000..b31331b
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_es.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="es">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">es-ES,es</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_et.xtb b/chromecast/app/resources/chromecast_settings_et.xtb
new file mode 100644
index 0000000..f5af1f4
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_et.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="et">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">et-EE,et,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_fa.xtb b/chromecast/app/resources/chromecast_settings_fa.xtb
new file mode 100644
index 0000000..2da41ae
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_fa.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fa">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">fa,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_fi.xtb b/chromecast/app/resources/chromecast_settings_fi.xtb
new file mode 100644
index 0000000..2fa3b8f
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_fi.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fi">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">fi-FI,fi,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_fil.xtb b/chromecast/app/resources/chromecast_settings_fil.xtb
new file mode 100644
index 0000000..66f3f62
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_fil.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fil">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">fil,fil-PH,tl,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_fr.xtb b/chromecast/app/resources/chromecast_settings_fr.xtb
new file mode 100644
index 0000000..6c6d6bd
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_fr.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fr">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">fr-FR,fr,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_gu.xtb b/chromecast/app/resources/chromecast_settings_gu.xtb
new file mode 100644
index 0000000..5d94c0f
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_gu.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="gu">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">gu-IN,gu,hi-IN,hi,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_he.xtb b/chromecast/app/resources/chromecast_settings_he.xtb
new file mode 100644
index 0000000..50c852c
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_he.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="he">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">he-IL,he,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_hi.xtb b/chromecast/app/resources/chromecast_settings_hi.xtb
new file mode 100644
index 0000000..68a7839
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_hi.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="hi">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">hi-IN,hi,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_hr.xtb b/chromecast/app/resources/chromecast_settings_hr.xtb
new file mode 100644
index 0000000..acd6d75
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_hr.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="hr">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">hr-HR,hr,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_hu.xtb b/chromecast/app/resources/chromecast_settings_hu.xtb
new file mode 100644
index 0000000..c0ee3dc
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_hu.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="hu">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">hu-HU,hu,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_id.xtb b/chromecast/app/resources/chromecast_settings_id.xtb
new file mode 100644
index 0000000..f4e482e
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_id.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="id">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">id-ID,id,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_it.xtb b/chromecast/app/resources/chromecast_settings_it.xtb
new file mode 100644
index 0000000..f5409db
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_it.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="it">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">it-IT,it,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ja.xtb b/chromecast/app/resources/chromecast_settings_ja.xtb
new file mode 100644
index 0000000..b018c16
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ja.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ja">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ja,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_kn.xtb b/chromecast/app/resources/chromecast_settings_kn.xtb
new file mode 100644
index 0000000..1b8b2a9
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_kn.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="kn">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">kn-IN,kn,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ko.xtb b/chromecast/app/resources/chromecast_settings_ko.xtb
new file mode 100644
index 0000000..df283e2
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ko.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ko">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ko-KR,ko,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_lt.xtb b/chromecast/app/resources/chromecast_settings_lt.xtb
new file mode 100644
index 0000000..39aa239
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_lt.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="lt">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">lt,en-US,en,ru,pl</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_lv.xtb b/chromecast/app/resources/chromecast_settings_lv.xtb
new file mode 100644
index 0000000..c40c878
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_lv.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="lv">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">lv-LV,lv,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ml.xtb b/chromecast/app/resources/chromecast_settings_ml.xtb
new file mode 100644
index 0000000..ee4aab9
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ml.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ml">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ml-IN,ml,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_mr.xtb b/chromecast/app/resources/chromecast_settings_mr.xtb
new file mode 100644
index 0000000..e20441d
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_mr.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="mr">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">mr-IN,mr,hi-IN,hi,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ms.xtb b/chromecast/app/resources/chromecast_settings_ms.xtb
new file mode 100644
index 0000000..86fe7eb5
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ms.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ms">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ms-MY,ms,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_nb.xtb b/chromecast/app/resources/chromecast_settings_nb.xtb
new file mode 100644
index 0000000..cc4afe8
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_nb.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="no">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">nb-NO,nb,no,nn,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_nl.xtb b/chromecast/app/resources/chromecast_settings_nl.xtb
new file mode 100644
index 0000000..dc7b596
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_nl.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="nl">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">nl-NL,nl,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_pl.xtb b/chromecast/app/resources/chromecast_settings_pl.xtb
new file mode 100644
index 0000000..51726b7
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_pl.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="pl">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">pl-PL,pl,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_pt-BR.xtb b/chromecast/app/resources/chromecast_settings_pt-BR.xtb
new file mode 100644
index 0000000..62b4e97
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_pt-BR.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="pt-BR">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">pt-BR,pt,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_pt-PT.xtb b/chromecast/app/resources/chromecast_settings_pt-PT.xtb
new file mode 100644
index 0000000..6554e55
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_pt-PT.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="pt-PT">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">pt-PT,pt,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ro.xtb b/chromecast/app/resources/chromecast_settings_ro.xtb
new file mode 100644
index 0000000..0bb0d5a
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ro.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ro">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ro-RO,ro,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ru.xtb b/chromecast/app/resources/chromecast_settings_ru.xtb
new file mode 100644
index 0000000..d5daf5e
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ru.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ru">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ru-RU,ru,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_sk.xtb b/chromecast/app/resources/chromecast_settings_sk.xtb
new file mode 100644
index 0000000..4e530fc
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_sk.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sk">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">sk-SK,sk,cs,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_sl.xtb b/chromecast/app/resources/chromecast_settings_sl.xtb
new file mode 100644
index 0000000..51c81ab
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_sl.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sl">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">sl-SI,sl,en-GB,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_sr.xtb b/chromecast/app/resources/chromecast_settings_sr.xtb
new file mode 100644
index 0000000..c20a7f6
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_sr.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sr">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">sr-RS,sr,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_sv.xtb b/chromecast/app/resources/chromecast_settings_sv.xtb
new file mode 100644
index 0000000..58df97f
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_sv.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sv">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">sv-SE,sv,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_sw.xtb b/chromecast/app/resources/chromecast_settings_sw.xtb
new file mode 100644
index 0000000..dd1a9d8
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_sw.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sw">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">sw,en-GB,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_ta.xtb b/chromecast/app/resources/chromecast_settings_ta.xtb
new file mode 100644
index 0000000..23ca317
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_ta.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ta">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">ta-IN,ta,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_te.xtb b/chromecast/app/resources/chromecast_settings_te.xtb
new file mode 100644
index 0000000..819de4e
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_te.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="te">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">te-IN,te,hi-IN,hi,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_th.xtb b/chromecast/app/resources/chromecast_settings_th.xtb
new file mode 100644
index 0000000..8cfc81a
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_th.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="th">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">th-TH,th</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_tr.xtb b/chromecast/app/resources/chromecast_settings_tr.xtb
new file mode 100644
index 0000000..b15cca3
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_tr.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="tr">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">tr-TR,tr,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_uk.xtb b/chromecast/app/resources/chromecast_settings_uk.xtb
new file mode 100644
index 0000000..17f0db6
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_uk.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="uk">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">uk-UA,uk,ru,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_vi.xtb b/chromecast/app/resources/chromecast_settings_vi.xtb
new file mode 100644
index 0000000..af25ed9
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_vi.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="vi">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">vi-VN,vi,fr-FR,fr,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_zh-CN.xtb b/chromecast/app/resources/chromecast_settings_zh-CN.xtb
new file mode 100644
index 0000000..173ce58
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_zh-CN.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="zh-CN">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">zh-CN,zh</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/chromecast_settings_zh-TW.xtb b/chromecast/app/resources/chromecast_settings_zh-TW.xtb
new file mode 100644
index 0000000..b7b0c07
--- /dev/null
+++ b/chromecast/app/resources/chromecast_settings_zh-TW.xtb
@@ -0,0 +1,5 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="zh-TW">
+<translation id="IDS_CHROMECAST_SETTINGS_ACCEPT_LANGUAGES">zh-TW,zh,en-US,en</translation>
+</translationbundle>
diff --git a/chromecast/app/resources/resource_ids b/chromecast/app/resources/resource_ids
new file mode 100644
index 0000000..d5b43fc
--- /dev/null
+++ b/chromecast/app/resources/resource_ids
@@ -0,0 +1,25 @@
+# Copyright 2014 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.
+#
+# This file is used to assign starting resource ids for resources and strings
+# used by Chromium. This is done to ensure that resource ids are unique
+# across all the grd files. If you are adding a new grd file, please add
+# a new entry to this file.
+#
+# The first entry in the file, SRCDIR, is special: It is a relative path from
+# this file to the base of your checkout.
+#
+# http://msdn.microsoft.com/en-us/library/t2zechd4(VS.71).aspx says that the
+# range for IDR_ is 1 to 28,671 and the range for IDS_ is 1 to 32,767 and
+# common convention starts practical use of IDs at 100 or 101.
+{
+ "SRCDIR": "../..",
+
+ "app/resources/shell_resources.grd": {
+ "includes": [31000],
+ },
+ "app/resources/chromecast_settings.grd": {
+ "messages": [31500],
+ },
+}
diff --git a/chromecast/app/resources/shell_devtools_discovery_page.html b/chromecast/app/resources/shell_devtools_discovery_page.html
new file mode 100644
index 0000000..00c9374
--- /dev/null
+++ b/chromecast/app/resources/shell_devtools_discovery_page.html
@@ -0,0 +1,56 @@
+<html>
+<head>
+<title>Cast shell remote debugging</title>
+<style>
+</style>
+
+<script>
+function onLoad() {
+ var tabs_list_request = new XMLHttpRequest();
+ tabs_list_request.open("GET", "/json/list?t=" + new Date().getTime(), true);
+ tabs_list_request.onreadystatechange = onReady;
+ tabs_list_request.send();
+}
+
+function onReady() {
+ if(this.readyState == 4 && this.status == 200) {
+ if(this.response != null) {
+ var responseJSON = JSON.parse(this.response);
+ for (var i = 0; i < responseJSON.length; ++i) {
+ appendItem(responseJSON[i]);
+ }
+ }
+ }
+}
+
+function appendItem(item_object) {
+ var frontend_ref;
+ if (item_object.devtoolsFrontendUrl) {
+ frontend_ref = document.createElement("a");
+ frontend_ref.href = item_object.devtoolsFrontendUrl;
+ frontend_ref.title = item_object.title;
+ } else {
+ frontend_ref = document.createElement("div");
+ frontend_ref.title = "The tab already has active debugging session";
+ }
+
+ var text = document.createElement("div");
+ if (item_object.title)
+ text.innerText = item_object.title;
+ else
+ text.innerText = "(untitled tab)";
+ text.style.cssText = "background-image:url(" + item_object.faviconUrl + ")";
+ frontend_ref.appendChild(text);
+
+ var item = document.createElement("p");
+ item.appendChild(frontend_ref);
+
+ document.getElementById("items").appendChild(item);
+}
+</script>
+</head>
+<body onload='onLoad()'>
+ <div id='caption'>Inspectable WebContents</div>
+ <div id='items'></div>
+</body>
+</html>
diff --git a/chromecast/app/resources/shell_resources.grd b/chromecast/app/resources/shell_resources.grd
new file mode 100644
index 0000000..9d4c322
--- /dev/null
+++ b/chromecast/app/resources/shell_resources.grd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grit latest_public_release="0" current_release="1">
+ <outputs>
+ <output filename="grit/shell_resources.h" type="rc_header">
+ <emit emit_type='prepend'></emit>
+ </output>
+ <output filename="shell_resources.pak" type="data_package" />
+ <output filename="shell_resources.rc" type="rc_all" />
+ </outputs>
+ <translations />
+ <release seq="1">
+ <includes>
+ <include name="IDR_CAST_SHELL_DEVTOOLS_DISCOVERY_PAGE" file="shell_devtools_discovery_page.html" type="BINDATA" />
+ </includes>
+ </release>
+</grit>