| OLD | NEW | 
|    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.content.ClipData; |    7 import android.content.ClipData; | 
|    8 import android.content.ClipboardManager; |    8 import android.content.ClipboardManager; | 
|    9 import android.content.Context; |    9 import android.content.Context; | 
|   10  |   10  | 
 |   11 import org.chromium.base.ContextUtils; | 
|   11 import org.chromium.base.annotations.CalledByNative; |   12 import org.chromium.base.annotations.CalledByNative; | 
|   12 import org.chromium.base.annotations.JNINamespace; |   13 import org.chromium.base.annotations.JNINamespace; | 
|   13 import org.chromium.base.annotations.SuppressFBWarnings; |   14 import org.chromium.base.annotations.SuppressFBWarnings; | 
|   14 import org.chromium.ui.R; |   15 import org.chromium.ui.R; | 
|   15 import org.chromium.ui.widget.Toast; |   16 import org.chromium.ui.widget.Toast; | 
|   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 cli
     pboard. | 
|   19  * clipboard. |  | 
|   20  */ |   20  */ | 
|   21 @JNINamespace("ui") |   21 @JNINamespace("ui") | 
|   22 public class Clipboard { |   22 public class Clipboard { | 
 |   23     private static Clipboard sInstance; | 
 |   24  | 
|   23     // Necessary for coercing clipboard contents to text if they require |   25     // Necessary for coercing clipboard contents to text if they require | 
|   24     // access to network resources, etceteras (e.g., URI in clipboard) |   26     // access to network resources, etceteras (e.g., URI in clipboard) | 
|   25     private final Context mContext; |   27     private final Context mContext; | 
|   26  |   28  | 
|   27     private final ClipboardManager mClipboardManager; |   29     private final ClipboardManager mClipboardManager; | 
|   28  |   30  | 
|   29     /** |   31     /** | 
|   30      * Use the factory constructor instead. |   32      * Get the singleton Clipboard instance (creating it if needed). | 
|   31      * |  | 
|   32      * @param context for accessing the clipboard |  | 
|   33      */ |   33      */ | 
|   34     public Clipboard(final Context context) { |   34     @CalledByNative | 
|   35         mContext = context; |   35     public static Clipboard getInstance() { | 
|   36         mClipboardManager = (ClipboardManager) |   36         if (sInstance == null) { | 
|   37                 context.getSystemService(Context.CLIPBOARD_SERVICE); |   37             sInstance = new Clipboard(); | 
 |   38         } | 
 |   39         return sInstance; | 
 |   40     } | 
 |   41  | 
 |   42     private Clipboard() { | 
 |   43         mContext = ContextUtils.getApplicationContext(); | 
 |   44         mClipboardManager = | 
 |   45                 (ClipboardManager) ContextUtils.getApplicationContext().getSyste
     mService( | 
 |   46                         Context.CLIPBOARD_SERVICE); | 
|   38     } |   47     } | 
|   39  |   48  | 
|   40     /** |   49     /** | 
|   41      * Returns a new Clipboard object bound to the specified context. |  | 
|   42      * |  | 
|   43      * @param context for accessing the clipboard |  | 
|   44      * @return the new object |  | 
|   45      */ |  | 
|   46     @CalledByNative |  | 
|   47     private static Clipboard create(final Context context) { |  | 
|   48         return new Clipboard(context); |  | 
|   49     } |  | 
|   50  |  | 
|   51     /** |  | 
|   52      * Emulates the behavior of the now-deprecated |   50      * Emulates the behavior of the now-deprecated | 
|   53      * {@link android.text.ClipboardManager#getText()} by invoking |   51      * {@link android.text.ClipboardManager#getText()} by invoking | 
|   54      * {@link android.content.ClipData.Item#coerceToText(Context)} on the first |   52      * {@link android.content.ClipData.Item#coerceToText(Context)} on the first | 
|   55      * item in the clipboard (if any) and returning the result as a string. |   53      * item in the clipboard (if any) and returning the result as a string. | 
|   56      * <p> |   54      * <p> | 
|   57      * This is quite different than simply calling {@link Object#toString()} on |   55      * This is quite different than simply calling {@link Object#toString()} on | 
|   58      * the clip; consumers of this API should familiarize themselves with the |   56      * the clip; consumers of this API should familiarize themselves with the | 
|   59      * process described in |   57      * process described in | 
|   60      * {@link android.content.ClipData.Item#coerceToText(Context)} before using |   58      * {@link android.content.ClipData.Item#coerceToText(Context)} before using | 
|   61      * this method. |   59      * this method. | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  135     private void setPrimaryClipNoException(ClipData clip) { |  133     private void setPrimaryClipNoException(ClipData clip) { | 
|  136         try { |  134         try { | 
|  137             mClipboardManager.setPrimaryClip(clip); |  135             mClipboardManager.setPrimaryClip(clip); | 
|  138         } catch (Exception ex) { |  136         } catch (Exception ex) { | 
|  139             // Ignore any exceptions here as certain devices have bugs and will 
     fail. |  137             // Ignore any exceptions here as certain devices have bugs and will 
     fail. | 
|  140             String text = mContext.getString(R.string.copy_to_clipboard_failure_
     message); |  138             String text = mContext.getString(R.string.copy_to_clipboard_failure_
     message); | 
|  141             Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show(); |  139             Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show(); | 
|  142         } |  140         } | 
|  143     } |  141     } | 
|  144 } |  142 } | 
| OLD | NEW |