summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/android/java/src/org/chromium/base/BaseChromiumApplication.java (renamed from base/android/java/src/org/chromium/base/ChromiumApplication.java)2
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/ChromiumApplication.java20
-rw-r--r--chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java6
-rw-r--r--chrome/browser/android/chrome_jni_registrar.cc3
-rw-r--r--chrome/browser/android/chromium_application.cc25
-rw-r--r--chrome/browser/android/chromium_application.h35
-rw-r--r--chrome/browser/media/protected_media_identifier_infobar_delegate.cc24
-rw-r--r--chrome/browser/media/protected_media_identifier_infobar_delegate.h2
-rw-r--r--chrome/chrome_browser.gypi3
-rw-r--r--content/shell/android/shell_apk/src/org/chromium/content_shell_apk/ContentShellApplication.java4
-rw-r--r--testing/android/AndroidManifest.xml2
11 files changed, 121 insertions, 5 deletions
diff --git a/base/android/java/src/org/chromium/base/ChromiumApplication.java b/base/android/java/src/org/chromium/base/BaseChromiumApplication.java
index 7c2b957..97b2ab4 100644
--- a/base/android/java/src/org/chromium/base/ChromiumApplication.java
+++ b/base/android/java/src/org/chromium/base/BaseChromiumApplication.java
@@ -9,7 +9,7 @@ import android.app.Application;
/**
* Basic application functionality that should be shared among all browser applications.
*/
-public class ChromiumApplication extends Application {
+public class BaseChromiumApplication extends Application {
@Override
public void onCreate() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromiumApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromiumApplication.java
new file mode 100644
index 0000000..4d765fe
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromiumApplication.java
@@ -0,0 +1,20 @@
+// Copyright 2013 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;
+
+import org.chromium.base.BaseChromiumApplication;
+import org.chromium.base.CalledByNative;
+
+/**
+ * Basic application functionality that should be shared among all browser applications that use
+ * chrome layer.
+ */
+public abstract class ChromiumApplication extends BaseChromiumApplication {
+ /**
+ * Opens a protected content settings page, if available.
+ */
+ @CalledByNative
+ protected abstract void openProtectedContentSettings();
+}
diff --git a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java
index d0f0125..678bcc2e 100644
--- a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java
+++ b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellApplication.java
@@ -6,8 +6,8 @@ package org.chromium.chrome.testshell;
import android.content.Intent;
-import org.chromium.base.ChromiumApplication;
import org.chromium.base.PathUtils;
+import org.chromium.chrome.browser.ChromiumApplication;
import org.chromium.chrome.browser.UmaUtils;
import org.chromium.content.browser.ResourceExtractor;
import org.chromium.content.common.CommandLine;
@@ -66,4 +66,8 @@ public class ChromiumTestShellApplication extends ChromiumApplication {
if (!CommandLine.isInitialized())
CommandLine.initFromFile(COMMAND_LINE_FILE);
}
+
+ @Override
+ protected void openProtectedContentSettings() {
+ }
}
diff --git a/chrome/browser/android/chrome_jni_registrar.cc b/chrome/browser/android/chrome_jni_registrar.cc
index ddd000a..68e3f9bc 100644
--- a/chrome/browser/android/chrome_jni_registrar.cc
+++ b/chrome/browser/android/chrome_jni_registrar.cc
@@ -9,6 +9,7 @@
#include "base/debug/trace_event.h"
#include "chrome/browser/android/bookmarks_bridge.h"
#include "chrome/browser/android/chrome_web_contents_delegate_android.h"
+#include "chrome/browser/android/chromium_application.h"
#include "chrome/browser/android/content_view_util.h"
#include "chrome/browser/android/dev_tools_server.h"
#include "chrome/browser/android/favicon_helper.h"
@@ -82,6 +83,8 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler },
{ "ChromeWebContentsDelegateAndroid",
RegisterChromeWebContentsDelegateAndroid },
+ { "ChromiumApplication",
+ ChromiumApplication::RegisterBindings },
{"ConfirmInfoBarDelegate", RegisterConfirmInfoBarDelegate},
{ "ContentViewUtil", RegisterContentViewUtil },
{ "DevToolsServer", RegisterDevToolsServer },
diff --git a/chrome/browser/android/chromium_application.cc b/chrome/browser/android/chromium_application.cc
new file mode 100644
index 0000000..c6e64ca
--- /dev/null
+++ b/chrome/browser/android/chromium_application.cc
@@ -0,0 +1,25 @@
+// Copyright 2013 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 "chrome/browser/android/chromium_application.h"
+
+#include "base/android/jni_android.h"
+#include "jni/ChromiumApplication_jni.h"
+
+namespace chrome {
+namespace android {
+
+// static
+bool ChromiumApplication::RegisterBindings(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+void ChromiumApplication::OpenProtectedContentSettings() {
+ Java_ChromiumApplication_openProtectedContentSettings(
+ base::android::AttachCurrentThread(),
+ base::android::GetApplicationContext());
+}
+
+} // namespace android
+} // namespace chrome
diff --git a/chrome/browser/android/chromium_application.h b/chrome/browser/android/chromium_application.h
new file mode 100644
index 0000000..3c43273
--- /dev/null
+++ b/chrome/browser/android/chromium_application.h
@@ -0,0 +1,35 @@
+// Copyright 2013 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 CHROME_BROWSER_ANDROID_CHROMIUM_APPLICATION_H_
+#define CHROME_BROWSER_ANDROID_CHROMIUM_APPLICATION_H_
+
+#include <jni.h>
+
+#include "base/basictypes.h"
+
+namespace chrome {
+namespace android {
+
+// Represents Android Chromium Application. This is a singleton and
+// provides functions to request browser side actions, such as opening a
+// settings page.
+class ChromiumApplication {
+ public:
+ static bool RegisterBindings(JNIEnv* env);
+
+ // Opens a protected content settings page, if available.
+ static void OpenProtectedContentSettings();
+
+ private:
+ ChromiumApplication() {}
+ ~ChromiumApplication() {}
+
+ DISALLOW_COPY_AND_ASSIGN(ChromiumApplication);
+};
+
+} // namespace android
+} // namespace chrome
+
+#endif // CHROME_BROWSER_ANDROID_CHROMIUM_APPLICATION_H_
diff --git a/chrome/browser/media/protected_media_identifier_infobar_delegate.cc b/chrome/browser/media/protected_media_identifier_infobar_delegate.cc
index bde3fbf..1670a31 100644
--- a/chrome/browser/media/protected_media_identifier_infobar_delegate.cc
+++ b/chrome/browser/media/protected_media_identifier_infobar_delegate.cc
@@ -12,6 +12,10 @@
#include "net/base/net_util.h"
#include "ui/base/l10n/l10n_util.h"
+#if defined(OS_ANDROID)
+#include "chrome/browser/android/chromium_application.h"
+#endif
+
// static
InfoBarDelegate* ProtectedMediaIdentifierInfoBarDelegate::Create(
InfoBarService* infobar_service,
@@ -106,3 +110,23 @@ bool ProtectedMediaIdentifierInfoBarDelegate::Cancel() {
SetPermission(true, false);
return true;
}
+
+string16 ProtectedMediaIdentifierInfoBarDelegate::GetLinkText() const {
+#if defined(OS_ANDROID)
+ return l10n_util::GetStringUTF16(
+ IDS_PROTECTED_MEDIA_IDENTIFIER_SETTINGS_LINK);
+#else
+ NOTIMPLEMENTED();
+ return string16();
+#endif
+}
+
+bool ProtectedMediaIdentifierInfoBarDelegate::LinkClicked(
+ WindowOpenDisposition disposition) {
+#if defined(OS_ANDROID)
+ chrome::android::ChromiumApplication::OpenProtectedContentSettings();
+#else
+ NOTIMPLEMENTED();
+#endif
+ return false; // Do not dismiss the info bar.
+}
diff --git a/chrome/browser/media/protected_media_identifier_infobar_delegate.h b/chrome/browser/media/protected_media_identifier_infobar_delegate.h
index 9510772..4050a87 100644
--- a/chrome/browser/media/protected_media_identifier_infobar_delegate.h
+++ b/chrome/browser/media/protected_media_identifier_infobar_delegate.h
@@ -47,6 +47,8 @@ class ProtectedMediaIdentifierInfoBarDelegate : public ConfirmInfoBarDelegate {
virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
virtual bool Accept() OVERRIDE;
virtual bool Cancel() OVERRIDE;
+ virtual string16 GetLinkText() const OVERRIDE;
+ virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE;
PermissionQueueController* controller_;
const PermissionRequestID id_;
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 4ed5bb2..1b7267b 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -101,6 +101,8 @@
'browser/android/chrome_startup_flags.h',
'browser/android/chrome_web_contents_delegate_android.cc',
'browser/android/chrome_web_contents_delegate_android.h',
+ 'browser/android/chromium_application.cc',
+ 'browser/android/chromium_application.h',
'browser/android/content_view_util.cc',
'browser/android/content_view_util.h',
'browser/android/crash_dump_manager.cc',
@@ -3608,6 +3610,7 @@
'android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java',
'android/java/src/org/chromium/chrome/browser/BookmarksBridge.java',
'android/java/src/org/chromium/chrome/browser/CertificateViewer.java',
+ 'android/java/src/org/chromium/chrome/browser/ChromiumApplication.java',
'android/java/src/org/chromium/chrome/browser/ChromeBrowserProvider.java',
'android/java/src/org/chromium/chrome/browser/ChromeHttpAuthHandler.java',
'android/java/src/org/chromium/chrome/browser/ChromeWebContentsDelegateAndroid.java',
diff --git a/content/shell/android/shell_apk/src/org/chromium/content_shell_apk/ContentShellApplication.java b/content/shell/android/shell_apk/src/org/chromium/content_shell_apk/ContentShellApplication.java
index 284f412..8b3046d 100644
--- a/content/shell/android/shell_apk/src/org/chromium/content_shell_apk/ContentShellApplication.java
+++ b/content/shell/android/shell_apk/src/org/chromium/content_shell_apk/ContentShellApplication.java
@@ -4,7 +4,7 @@
package org.chromium.content_shell_apk;
-import org.chromium.base.ChromiumApplication;
+import org.chromium.base.BaseChromiumApplication;
import org.chromium.base.PathUtils;
import org.chromium.content.browser.ResourceExtractor;
@@ -12,7 +12,7 @@ import org.chromium.content.browser.ResourceExtractor;
* Entry point for the content shell application. Handles initialization of information that needs
* to be shared across the main activity and the child services created.
*/
-public class ContentShellApplication extends ChromiumApplication {
+public class ContentShellApplication extends BaseChromiumApplication {
private static final String[] MANDATORY_PAK_FILES = new String[] {"content_shell.pak"};
private static final String PRIVATE_DATA_DIRECTORY_SUFFIX = "content_shell";
diff --git a/testing/android/AndroidManifest.xml b/testing/android/AndroidManifest.xml
index 1ee1845..375ade3 100644
--- a/testing/android/AndroidManifest.xml
+++ b/testing/android/AndroidManifest.xml
@@ -13,7 +13,7 @@ found in the LICENSE file.
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="18" />
<application android:label="ChromeNativeTests"
- android:name="org.chromium.base.ChromiumApplication">
+ android:name="org.chromium.base.BaseChromiumApplication">
<activity android:name=".ChromeNativeTestActivity"
android:label="ChromeNativeTest"
android:configChanges="orientation|keyboardHidden">