Commit dfd96bfb authored by avayvod's avatar avayvod Committed by Commit bot

[PresentationAPI, Android] Add ChromeMediaRouter.java and bind it with the...

[PresentationAPI, Android] Add ChromeMediaRouter.java and bind it with the native MediaRouterAndroid

BUG=512549
NOTRY=true
NOTREECHECKS=true

Review URL: https://codereview.chromium.org/1275893002

Cr-Commit-Position: refs/heads/master@{#342392}
parent 1d031671
// Copyright 2015 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.
package org.chromium.chrome.browser.media.router;
import android.content.Context;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
/**
* Implements the JNI interface called from the C++ Media Router implementation on Android.
*/
@JNINamespace("media_router")
public class ChromeMediaRouter {
private static final String TAG = "cr.MediaRouter";
private final long mNativeMediaRouter;
/**
* Initializes the media router and its providers.
*/
@CalledByNative
public static ChromeMediaRouter create(long nativeMediaRouter, Context context) {
return new ChromeMediaRouter(nativeMediaRouter, context);
}
private ChromeMediaRouter(long nativeMediaRouter, Context context) {
mNativeMediaRouter = nativeMediaRouter;
}
}
\ No newline at end of file
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
#include "chrome/browser/lifetime/application_lifetime_android.h" #include "chrome/browser/lifetime/application_lifetime_android.h"
#include "chrome/browser/media/android/remote/record_cast_action.h" #include "chrome/browser/media/android/remote/record_cast_action.h"
#include "chrome/browser/media/android/remote/remote_media_player_bridge.h" #include "chrome/browser/media/android/remote/remote_media_player_bridge.h"
#include "chrome/browser/media/android/router/media_router_android.h"
#include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h" #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h"
#include "chrome/browser/notifications/notification_ui_manager_android.h" #include "chrome/browser/notifications/notification_ui_manager_android.h"
#include "chrome/browser/password_manager/credential_android.h" #include "chrome/browser/password_manager/credential_android.h"
...@@ -193,7 +194,10 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = { ...@@ -193,7 +194,10 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
ChromeBrowserProvider::RegisterChromeBrowserProvider}, ChromeBrowserProvider::RegisterChromeBrowserProvider},
{"ChromeHttpAuthHandler", {"ChromeHttpAuthHandler",
ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler}, ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler},
{"ChromeWebContentsDelegateAndroid", #if defined(ENABLE_MEDIA_ROUTER)
{"ChromeMediaRouter", media_router::MediaRouterAndroid::Register},
#endif
{"ChromeWebContentsDelegateAndroid",
RegisterChromeWebContentsDelegateAndroid}, RegisterChromeWebContentsDelegateAndroid},
{"CompositorView", RegisterCompositorView}, {"CompositorView", RegisterCompositorView},
{"ConfirmInfoBarDelegate", RegisterConfirmInfoBarDelegate}, {"ConfirmInfoBarDelegate", RegisterConfirmInfoBarDelegate},
......
...@@ -4,16 +4,31 @@ ...@@ -4,16 +4,31 @@
#include "chrome/browser/media/android/router/media_router_android.h" #include "chrome/browser/media/android/router/media_router_android.h"
#include "base/android/jni_android.h"
#include "base/logging.h" #include "base/logging.h"
#include "jni/ChromeMediaRouter_jni.h"
namespace media_router { namespace media_router {
MediaRouterAndroid::MediaRouterAndroid(content::BrowserContext*) { MediaRouterAndroid::MediaRouterAndroid(content::BrowserContext*) {
JNIEnv* env = base::android::AttachCurrentThread();
java_media_router_.Reset(Java_ChromeMediaRouter_create(
env,
reinterpret_cast<jlong>(this),
base::android::GetApplicationContext()));
} }
MediaRouterAndroid::~MediaRouterAndroid() { MediaRouterAndroid::~MediaRouterAndroid() {
} }
// static
bool MediaRouterAndroid::Register(JNIEnv* env) {
bool ret = RegisterNativesImpl(env);
// No native calls to register just yet.
// DCHECK(g_ChromeMediaRouter_clazz);
return ret;
}
void MediaRouterAndroid::CreateRoute( void MediaRouterAndroid::CreateRoute(
const MediaSource::Id& source_id, const MediaSource::Id& source_id,
const MediaSink::Id& sink_id, const MediaSink::Id& sink_id,
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
#ifndef CHROME_BROWSER_MEDIA_ANDROID_ROUTER_MEDIA_ROUTER_ANDROID_H_ #ifndef CHROME_BROWSER_MEDIA_ANDROID_ROUTER_MEDIA_ROUTER_ANDROID_H_
#define CHROME_BROWSER_MEDIA_ANDROID_ROUTER_MEDIA_ROUTER_ANDROID_H_ #define CHROME_BROWSER_MEDIA_ANDROID_ROUTER_MEDIA_ROUTER_ANDROID_H_
#include <jni.h>
#include "base/android/scoped_java_ref.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "chrome/browser/media/router/media_router.h" #include "chrome/browser/media/router/media_router.h"
...@@ -19,6 +22,8 @@ class MediaRouterAndroid : public MediaRouter { ...@@ -19,6 +22,8 @@ class MediaRouterAndroid : public MediaRouter {
public: public:
~MediaRouterAndroid() override; ~MediaRouterAndroid() override;
static bool Register(JNIEnv* env);
// MediaRouter implementation. // MediaRouter implementation.
void CreateRoute( void CreateRoute(
const MediaSource::Id& source_id, const MediaSource::Id& source_id,
...@@ -59,6 +64,8 @@ class MediaRouterAndroid : public MediaRouter { ...@@ -59,6 +64,8 @@ class MediaRouterAndroid : public MediaRouter {
void UnregisterPresentationSessionMessagesObserver( void UnregisterPresentationSessionMessagesObserver(
PresentationSessionMessagesObserver* observer) override; PresentationSessionMessagesObserver* observer) override;
base::android::ScopedJavaGlobalRef<jobject> java_media_router_;
DISALLOW_COPY_AND_ASSIGN(MediaRouterAndroid); DISALLOW_COPY_AND_ASSIGN(MediaRouterAndroid);
}; };
......
...@@ -1735,6 +1735,7 @@ ...@@ -1735,6 +1735,7 @@
'android/java/src/org/chromium/chrome/browser/JavascriptAppModalDialog.java', 'android/java/src/org/chromium/chrome/browser/JavascriptAppModalDialog.java',
'android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java', 'android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java',
'android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java', 'android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java',
'android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java',
'android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java', 'android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java',
'android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java', 'android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java',
'android/java/src/org/chromium/chrome/browser/metrics/VariationsSession.java', 'android/java/src/org/chromium/chrome/browser/metrics/VariationsSession.java',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment