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

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

Issue 973403002: Address NewApi warnings in src/ui. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.ui.base; 5 package org.chromium.ui.base;
6 6
7 import android.annotation.TargetApi;
7 import android.content.ClipData; 8 import android.content.ClipData;
8 import android.content.ClipboardManager; 9 import android.content.ClipboardManager;
9 import android.content.Context; 10 import android.content.Context;
11 import android.os.Build;
10 import android.widget.Toast; 12 import android.widget.Toast;
11 13
12 import org.chromium.base.ApiCompatibilityUtils;
13 import org.chromium.base.CalledByNative; 14 import org.chromium.base.CalledByNative;
14 import org.chromium.base.JNINamespace; 15 import org.chromium.base.JNINamespace;
15 import org.chromium.ui.R; 16 import org.chromium.ui.R;
16 17
17 /** 18 /**
18 * Simple proxy that provides C++ code with an access pathway to the Android 19 * Simple proxy that provides C++ code with an access pathway to the Android
19 * clipboard. 20 * clipboard.
20 */ 21 */
21 @JNINamespace("ui") 22 @JNINamespace("ui")
22 public class Clipboard { 23 public class Clipboard {
24
25 private static final boolean IS_HTML_CLIPBOARD_SUPPORTED =
26 Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
27
23 // Necessary for coercing clipboard contents to text if they require 28 // Necessary for coercing clipboard contents to text if they require
24 // access to network resources, etceteras (e.g., URI in clipboard) 29 // access to network resources, etceteras (e.g., URI in clipboard)
25 private final Context mContext; 30 private final Context mContext;
26 31
27 private final ClipboardManager mClipboardManager; 32 private final ClipboardManager mClipboardManager;
28 33
29 /** 34 /**
30 * Use the factory constructor instead. 35 * Use the factory constructor instead.
31 * 36 *
32 * @param context for accessing the clipboard 37 * @param context for accessing the clipboard
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 } 81 }
77 return null; 82 return null;
78 } 83 }
79 84
80 /** 85 /**
81 * Gets the HTML text of top item on the primary clip on the Android clipboa rd. 86 * Gets the HTML text of top item on the primary clip on the Android clipboa rd.
82 * 87 *
83 * @return a Java string with the html text if any, or null if there is no h tml 88 * @return a Java string with the html text if any, or null if there is no h tml
84 * text or no entries on the primary clip. 89 * text or no entries on the primary clip.
85 */ 90 */
91 @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
86 @CalledByNative 92 @CalledByNative
87 private String getHTMLText() { 93 private String getHTMLText() {
88 if (isHTMLClipboardSupported()) { 94 if (IS_HTML_CLIPBOARD_SUPPORTED) {
89 final ClipData clip = mClipboardManager.getPrimaryClip(); 95 final ClipData clip = mClipboardManager.getPrimaryClip();
90 if (clip != null && clip.getItemCount() > 0) { 96 if (clip != null && clip.getItemCount() > 0) {
91 return clip.getItemAt(0).getHtmlText(); 97 return clip.getItemAt(0).getHtmlText();
92 } 98 }
93 } 99 }
94 return null; 100 return null;
95 } 101 }
96 102
97 /** 103 /**
98 * Emulates the behavior of the now-deprecated 104 * Emulates the behavior of the now-deprecated
(...skipping 23 matching lines...) Expand all
122 128
123 /** 129 /**
124 * Writes HTML to the clipboard, together with a plain-text representation 130 * Writes HTML to the clipboard, together with a plain-text representation
125 * of that very data. This API is only available in Android JellyBean+ and 131 * of that very data. This API is only available in Android JellyBean+ and
126 * will be a no-operation in older versions. 132 * will be a no-operation in older versions.
127 * 133 *
128 * @param html The HTML content to be pasted to the clipboard. 134 * @param html The HTML content to be pasted to the clipboard.
129 * @param label The Plain-text label for the HTML content. 135 * @param label The Plain-text label for the HTML content.
130 * @param text Plain-text representation of the HTML content. 136 * @param text Plain-text representation of the HTML content.
131 */ 137 */
138 @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
132 public void setHTMLText(final String html, final String label, final String text) { 139 public void setHTMLText(final String html, final String label, final String text) {
133 if (isHTMLClipboardSupported()) { 140 if (IS_HTML_CLIPBOARD_SUPPORTED) {
134 setPrimaryClipNoException(ClipData.newHtmlText(label, text, html)); 141 setPrimaryClipNoException(ClipData.newHtmlText(label, text, html));
135 } 142 }
136 } 143 }
137 144
138 /** 145 /**
139 * Writes HTML to the clipboard, together with a plain-text representation 146 * Writes HTML to the clipboard, together with a plain-text representation
140 * of that very data. This API is only available in Android JellyBean+ and 147 * of that very data. This API is only available in Android JellyBean+ and
141 * will be a no-operation in older versions. 148 * will be a no-operation in older versions.
142 * 149 *
143 * @param html The HTML content to be pasted to the clipboard. 150 * @param html The HTML content to be pasted to the clipboard.
144 * @param text Plain-text representation of the HTML content. 151 * @param text Plain-text representation of the HTML content.
145 */ 152 */
146 @CalledByNative 153 @CalledByNative
147 public void setHTMLText(final String html, final String text) { 154 public void setHTMLText(final String html, final String text) {
148 setHTMLText(html, null, text); 155 setHTMLText(html, null, text);
149 } 156 }
150 157
151 @CalledByNative 158 @CalledByNative
152 private static boolean isHTMLClipboardSupported() { 159 private static boolean isHTMLClipboardSupported() {
153 return ApiCompatibilityUtils.isHTMLClipboardSupported(); 160 return IS_HTML_CLIPBOARD_SUPPORTED;
154 } 161 }
155 162
156 private void setPrimaryClipNoException(ClipData clip) { 163 private void setPrimaryClipNoException(ClipData clip) {
157 try { 164 try {
158 mClipboardManager.setPrimaryClip(clip); 165 mClipboardManager.setPrimaryClip(clip);
159 } catch (Exception ex) { 166 } catch (Exception ex) {
160 // Ignore any exceptions here as certain devices have bugs and will fail. 167 // Ignore any exceptions here as certain devices have bugs and will fail.
161 String text = mContext.getString(R.string.copy_to_clipboard_failure_ message); 168 String text = mContext.getString(R.string.copy_to_clipboard_failure_ message);
162 Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show(); 169 Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show();
163 } 170 }
164 } 171 }
165 } 172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698