Chromium Code Reviews| Index: ui/base/clipboard/clipboard.h |
| diff --git a/ui/base/clipboard/clipboard.h b/ui/base/clipboard/clipboard.h |
| index 94d78712f26c6c6e629b33513e43ffd1831224d1..87cf29cef82a4d28921e7a116e84d91a723a3067 100644 |
| --- a/ui/base/clipboard/clipboard.h |
| +++ b/ui/base/clipboard/clipboard.h |
| @@ -11,6 +11,7 @@ |
| #include "base/compiler_specific.h" |
| #include "base/gtest_prod_util.h" |
| +#include "base/observer_list.h" |
| #include "base/process.h" |
| #include "base/shared_memory.h" |
| #include "base/string16.h" |
| @@ -132,6 +133,7 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { |
| CBF_BITMAP, |
| CBF_SMBITMAP, // Bitmap from shared memory. |
| CBF_DATA, // Arbitrary block of bytes. |
| + CBF_INCOGNITO_MARKER, // Signifies that data came from Incognito mode. |
| }; |
| // ObjectMap is a map from ObjectType to associated data. |
| @@ -162,6 +164,8 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { |
| // size gfx::Size struct |
| // CBF_DATA format char array |
| // data byte array |
| + // CBF_INCOGNITO_MARKER |
| + // data byte array |
| typedef std::vector<char> ObjectMapParam; |
| typedef std::vector<ObjectMapParam> ObjectMapParams; |
| typedef std::map<int /* ObjectType */, ObjectMapParams> ObjectMap; |
| @@ -174,6 +178,22 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { |
| BUFFER_SELECTION, |
| }; |
| + class ClipboardObserver { |
| + public: |
| + // Called at the end of Clipboard::WriteObjects() |
| + virtual void OnWriteObjects(Buffer buffer) = 0; |
|
dcheng
2013/01/31 22:25:56
I feel a little uncertain about having a Clipboard
battre
2013/02/01 09:36:39
I think the polling on Mac would be very awkward.
|
| + protected: |
| + virtual ~ClipboardObserver() {} |
| + }; |
| + |
| + void AddObserver(ClipboardObserver* obs) { |
| + observer_list_.AddObserver(obs); |
| + } |
| + |
| + void RemoveObserver(ClipboardObserver* obs) { |
| + observer_list_.RemoveObserver(obs); |
| + } |
| + |
| static bool IsValidBuffer(int32 buffer) { |
| switch (buffer) { |
| case BUFFER_STANDARD: |
| @@ -280,6 +300,7 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { |
| // crbug.com/158399. |
| static const FormatType& GetWebCustomDataFormatType(); |
| static const FormatType& GetPepperCustomDataFormatType(); |
| + static const FormatType& GetIncognitoMarkerFormatType(); |
| // Embeds a pointer to a SharedMemory object pointed to by |bitmap_handle| |
| // belonging to |process| into a shared bitmap [CBF_SMBITMAP] slot in |
| @@ -307,6 +328,8 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { |
| void DispatchObject(ObjectType type, const ObjectMapParams& params); |
| + void WriteObjectsImpl(Buffer buffer, const ObjectMap& objects); |
| + |
| void WriteText(const char* text_data, size_t text_len); |
| void WriteHTML(const char* markup_data, |
| @@ -382,6 +405,7 @@ class UI_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) { |
| class AuraX11Details; |
| scoped_ptr<AuraX11Details> aurax11_details_; |
| #endif |
| + ObserverList<ClipboardObserver> observer_list_; |
| DISALLOW_COPY_AND_ASSIGN(Clipboard); |
| }; |