Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Unified Diff: services/android/java_handler.cc

Issue 1464313002: Move //service/android to //service/java_handler (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Follow review Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « services/android/java_handler.h ('k') | services/java_handler/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
-}
-
« no previous file with comments | « services/android/java_handler.h ('k') | services/java_handler/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698