Commit 52efd93f authored by avayvod's avatar avayvod Committed by Commit bot

[PresentationAPI, Android] Add ChromeMediaRouterDialogController.java and bind...

[PresentationAPI, Android] Add ChromeMediaRouterDialogController.java and bind it with the native MediaRouterDialogControllerAndroid

BUG=517101

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

Cr-Commit-Position: refs/heads/master@{#342399}
parent c6a42394
// 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 dialog controller implementation
* on Android.
*/
@JNINamespace("media_router")
public class ChromeMediaRouterDialogController {
private static final String TAG = "cr.MediaRouter";
private final long mNativeDialogController;
/**
* Initializes the media router and its providers.
*/
@CalledByNative
public static ChromeMediaRouterDialogController create(
long nativeDialogController, Context context) {
return new ChromeMediaRouterDialogController(nativeDialogController, context);
}
private ChromeMediaRouterDialogController(long nativeDialogController, Context context) {
mNativeDialogController = nativeDialogController;
}
}
......@@ -84,6 +84,7 @@
#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/router/media_router_android.h"
#include "chrome/browser/media/android/router/media_router_dialog_controller_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/password_manager/credential_android.h"
......@@ -197,6 +198,8 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler},
#if defined(ENABLE_MEDIA_ROUTER)
{"ChromeMediaRouter", media_router::MediaRouterAndroid::Register},
{"ChromeMediaRouterDialogController",
media_router::MediaRouterDialogControllerAndroid::Register},
#endif
{"ChromeWebContentsDelegateAndroid",
RegisterChromeWebContentsDelegateAndroid},
......
......@@ -4,9 +4,11 @@
#include "chrome/browser/media/android/router/media_router_dialog_controller_android.h"
#include "base/android/jni_android.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "jni/ChromeMediaRouterDialogController_jni.h"
DEFINE_WEB_CONTENTS_USER_DATA_KEY(
media_router::MediaRouterDialogControllerAndroid);
......@@ -28,6 +30,19 @@ MediaRouterDialogControllerAndroid::GetOrCreateForWebContents(
MediaRouterDialogControllerAndroid::MediaRouterDialogControllerAndroid(
WebContents* web_contents)
: MediaRouterDialogController(web_contents) {
JNIEnv* env = base::android::AttachCurrentThread();
java_dialog_controller_.Reset(Java_ChromeMediaRouterDialogController_create(
env,
reinterpret_cast<jlong>(this),
base::android::GetApplicationContext()));
}
// static
bool MediaRouterDialogControllerAndroid::Register(JNIEnv* env) {
bool ret = RegisterNativesImpl(env);
// No native calls to register yet.
// DCHECK(g_ChromeMediaRouterDialogController_clazz);
return ret;
}
MediaRouterDialogControllerAndroid::~MediaRouterDialogControllerAndroid() {
......
......@@ -5,6 +5,9 @@
#ifndef CHROME_BROWSER_MEDIA_ANDROID_ROUTER_MEDIA_ROUTER_DIALOG_CONTROLLER_ANDROID_H_
#define CHROME_BROWSER_MEDIA_ANDROID_ROUTER_MEDIA_ROUTER_DIALOG_CONTROLLER_ANDROID_H_
#include <jni.h>
#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
#include "chrome/browser/media/router/media_router_dialog_controller.h"
#include "content/public/browser/web_contents_user_data.h"
......@@ -18,6 +21,8 @@ class MediaRouterDialogControllerAndroid
public:
~MediaRouterDialogControllerAndroid() override;
static bool Register(JNIEnv* env);
static MediaRouterDialogControllerAndroid* GetOrCreateForWebContents(
content::WebContents* web_contents);
......@@ -34,6 +39,8 @@ class MediaRouterDialogControllerAndroid
void CloseMediaRouterDialog() override;
bool IsShowingMediaRouterDialog() const override;
base::android::ScopedJavaGlobalRef<jobject> java_dialog_controller_;
DISALLOW_COPY_AND_ASSIGN(MediaRouterDialogControllerAndroid);
};
......
......@@ -1738,6 +1738,7 @@
'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/router/ChromeMediaRouter.java',
'android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouterDialogController.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/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