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

Unified Diff: ui/android/java/src/org/chromium/ui/base/Clipboard.java

Issue 136193002: Add Clipboard::GetSequenceNumber test and fix Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months 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
Index: ui/android/java/src/org/chromium/ui/base/Clipboard.java
diff --git a/ui/android/java/src/org/chromium/ui/base/Clipboard.java b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
index aaa500ea6dec0a58c941f9e461844608253c7c66..4724ed1deb477e281a884bde0a03b5c91554505b 100644
--- a/ui/android/java/src/org/chromium/ui/base/Clipboard.java
+++ b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
@@ -27,11 +27,31 @@ public class Clipboard {
private final ClipboardManager mClipboardManager;
/**
+ * Simple helper class to proxy the clipboard change callback to C++.
+ */
+ private class Listener implements ClipboardManager.OnPrimaryClipChangedListener {
bulach 2014/01/14 14:45:05 wild guess: in the test, it's doing base::RunLoop(
+ /** The native C++ object that receives the callback. */
+ private final long mNativeClipboardChangeListener;
+
+ private Listener(long nativeClipboardChangeListener) {
+ mNativeClipboardChangeListener = nativeClipboardChangeListener;
+ }
+
+ /**
+ * Callback that is invoked by ClipboardManager when the primary clip changes.
+ */
+ @Override
+ public void onPrimaryClipChanged() {
+ Clipboard.this.nativeOnChange(mNativeClipboardChangeListener);
+ }
+ };
+
+ /**
* Use the factory constructor instead.
*
* @param context for accessing the clipboard
*/
- public Clipboard(final Context context) {
+ private Clipboard(final Context context) {
mContext = context;
mClipboardManager = (ClipboardManager)
context.getSystemService(Context.CLIPBOARD_SERVICE);
@@ -44,7 +64,7 @@ public class Clipboard {
* @return the new object
*/
@CalledByNative
- private static Clipboard create(final Context context) {
+ public static Clipboard create(final Context context) {
return new Clipboard(context);
}
@@ -153,6 +173,15 @@ public class Clipboard {
return ApiCompatibilityUtils.isHTMLClipboardSupported();
}
+ /**
+ * Adds a listener to detect when the clipboard contents change.
+ */
+ @CalledByNative
+ public void addChangeListener(long nativeClipboardChangeListener) {
+ mClipboardManager.addPrimaryClipChangedListener(
+ new Listener(nativeClipboardChangeListener));
+ }
+
private void setPrimaryClipNoException(ClipData clip) {
try {
mClipboardManager.setPrimaryClip(clip);
@@ -162,4 +191,6 @@ public class Clipboard {
Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show();
}
}
+
+ private native void nativeOnChange(long nativeClipboardChangeListener);
}

Powered by Google App Engine
This is Rietveld 408576698