| Index: services/android/java_handler.cc
 | 
| diff --git a/services/android/java_handler.cc b/services/android/java_handler.cc
 | 
| deleted file mode 100644
 | 
| index 63a7a52349ae39033d1b2aec9fce9911c4a21963..0000000000000000000000000000000000000000
 | 
| --- a/services/android/java_handler.cc
 | 
| +++ /dev/null
 | 
| @@ -1,164 +0,0 @@
 | 
| -// 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 "services/android/java_handler.h"
 | 
| -
 | 
| -#include "base/android/base_jni_onload.h"
 | 
| -#include "base/android/base_jni_registrar.h"
 | 
| -#include "base/android/jni_android.h"
 | 
| -#include "base/android/jni_string.h"
 | 
| -#include "base/android/library_loader/library_loader_hooks.h"
 | 
| -#include "base/bind.h"
 | 
| -#include "base/files/file_path.h"
 | 
| -#include "base/logging.h"
 | 
| -#include "base/run_loop.h"
 | 
| -#include "base/scoped_native_library.h"
 | 
| -#include "base/trace_event/trace_event.h"
 | 
| -#include "jni/JavaHandler_jni.h"
 | 
| -#include "mojo/android/system/base_run_loop.h"
 | 
| -#include "mojo/android/system/core_impl.h"
 | 
| -#include "mojo/application/application_runner_chromium.h"
 | 
| -#include "mojo/application/content_handler_factory.h"
 | 
| -#include "mojo/public/c/system/main.h"
 | 
| -#include "mojo/public/cpp/application/application_impl.h"
 | 
| -
 | 
| -using base::android::AttachCurrentThread;
 | 
| -using base::android::ScopedJavaLocalRef;
 | 
| -using base::android::ConvertJavaStringToUTF8;
 | 
| -using base::android::ConvertUTF8ToJavaString;
 | 
| -using base::android::GetApplicationContext;
 | 
| -
 | 
| -namespace {
 | 
| -
 | 
| -bool RegisterJNI(JNIEnv* env) {
 | 
| -  if (!base::android::RegisterJni(env))
 | 
| -    return false;
 | 
| -
 | 
| -  if (!services::android::RegisterNativesImpl(env))
 | 
| -    return false;
 | 
| -
 | 
| -  if (!mojo::android::RegisterCoreImpl(env))
 | 
| -    return false;
 | 
| -
 | 
| -  if (!mojo::android::RegisterBaseRunLoop(env))
 | 
| -    return false;
 | 
| -
 | 
| -  return true;
 | 
| -}
 | 
| -
 | 
| -}  // namespace
 | 
| -
 | 
| -namespace services {
 | 
| -namespace android {
 | 
| -
 | 
| -JavaHandler::JavaHandler() : content_handler_factory_(this) {
 | 
| -}
 | 
| -
 | 
| -JavaHandler::~JavaHandler() {
 | 
| -}
 | 
| -
 | 
| -void JavaHandler::RunApplication(
 | 
| -    mojo::InterfaceRequest<mojo::Application> application_request,
 | 
| -    mojo::URLResponsePtr response) {
 | 
| -  TRACE_EVENT_BEGIN1("java_handler", "JavaHandler::RunApplication", "url",
 | 
| -                     std::string(response->url));
 | 
| -  JNIEnv* env = base::android::AttachCurrentThread();
 | 
| -  base::FilePath archive_path;
 | 
| -  base::FilePath cache_dir;
 | 
| -  {
 | 
| -    base::MessageLoop loop;
 | 
| -    handler_task_runner_->PostTask(
 | 
| -        FROM_HERE,
 | 
| -        base::Bind(&JavaHandler::GetApplication, base::Unretained(this),
 | 
| -                   base::Unretained(&archive_path),
 | 
| -                   base::Unretained(&cache_dir), base::Passed(response.Pass()),
 | 
| -                   base::Bind(base::IgnoreResult(
 | 
| -                                  &base::SingleThreadTaskRunner::PostTask),
 | 
| -                              loop.task_runner(), FROM_HERE,
 | 
| -                              base::MessageLoop::QuitWhenIdleClosure())));
 | 
| -    base::RunLoop().Run();
 | 
| -  }
 | 
| -
 | 
| -
 | 
| -  jobject context = base::android::GetApplicationContext();
 | 
| -  ScopedJavaLocalRef<jstring> j_archive_path =
 | 
| -      ConvertUTF8ToJavaString(env, archive_path.value());
 | 
| -  ScopedJavaLocalRef<jstring> j_cache_dir =
 | 
| -      ConvertUTF8ToJavaString(env, cache_dir.value());
 | 
| -  Java_JavaHandler_bootstrap(
 | 
| -      env, context, j_archive_path.obj(), j_cache_dir.obj(),
 | 
| -      application_request.PassMessagePipe().release().value());
 | 
| -}
 | 
| -
 | 
| -void JavaHandler::Initialize(mojo::ApplicationImpl* app) {
 | 
| -  tracing_.Initialize(app);
 | 
| -  handler_task_runner_ = base::MessageLoop::current()->task_runner();
 | 
| -  app->ConnectToService("mojo:url_response_disk_cache",
 | 
| -                        &url_response_disk_cache_);
 | 
| -}
 | 
| -
 | 
| -void JavaHandler::GetApplication(base::FilePath* archive_path,
 | 
| -                                 base::FilePath* cache_dir,
 | 
| -                                 mojo::URLResponsePtr response,
 | 
| -                                 const base::Closure& callback) {
 | 
| -  url_response_disk_cache_->UpdateAndGet(
 | 
| -      response.Pass(),
 | 
| -      [archive_path, cache_dir, callback](mojo::Array<uint8_t> extracted_path,
 | 
| -                                          mojo::Array<uint8_t> cache_path) {
 | 
| -        if (extracted_path.is_null()) {
 | 
| -          *archive_path = base::FilePath();
 | 
| -          *cache_dir = base::FilePath();
 | 
| -        } else {
 | 
| -          *archive_path = base::FilePath(
 | 
| -              std::string(reinterpret_cast<char*>(&extracted_path.front()),
 | 
| -                          extracted_path.size()));
 | 
| -          *cache_dir = base::FilePath(std::string(
 | 
| -              reinterpret_cast<char*>(&cache_path.front()), cache_path.size()));
 | 
| -        }
 | 
| -        callback.Run();
 | 
| -      });
 | 
| -}
 | 
| -
 | 
| -bool JavaHandler::ConfigureIncomingConnection(
 | 
| -    mojo::ApplicationConnection* connection) {
 | 
| -  connection->AddService(&content_handler_factory_);
 | 
| -  return true;
 | 
| -}
 | 
| -
 | 
| -void PreInvokeEvent(JNIEnv* env, jclass jcaller) {
 | 
| -  TRACE_EVENT_END0("java_handler", "JavaHandler::RunApplication");
 | 
| -}
 | 
| -
 | 
| -}  // namespace android
 | 
| -}  // namespace services
 | 
| -
 | 
| -MojoResult MojoMain(MojoHandle application_request) {
 | 
| -  mojo::ApplicationRunnerChromium runner(new services::android::JavaHandler());
 | 
| -  return runner.Run(application_request);
 | 
| -}
 | 
| -
 | 
| -JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
 | 
| -  std::vector<base::android::RegisterCallback> register_callbacks;
 | 
| -  register_callbacks.push_back(base::Bind(&RegisterJNI));
 | 
| -  if (!base::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
 | 
| -      !base::android::OnJNIOnLoadInit(
 | 
| -          std::vector<base::android::InitCallback>())) {
 | 
| -    return -1;
 | 
| -  }
 | 
| -
 | 
| -  // There cannot be two AtExit objects triggering at the same time. Remove the
 | 
| -  // one from LibraryLoader as ApplicationRunnerChromium also uses one.
 | 
| -  base::android::LibraryLoaderExitHook();
 | 
| -
 | 
| -  return JNI_VERSION_1_4;
 | 
| -}
 | 
| -
 | 
| -// This is needed because the application needs to access the application
 | 
| -// context.
 | 
| -extern "C" JNI_EXPORT void InitApplicationContext(
 | 
| -    const base::android::JavaRef<jobject>& context) {
 | 
| -  JNIEnv* env = base::android::AttachCurrentThread();
 | 
| -  base::android::InitApplicationContext(env, context);
 | 
| -}
 | 
| -
 | 
| 
 |