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

Unified Diff: ui/base/clipboard/clipboard.h

Issue 12041078: Clear the clipboard closing Incognito window (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge with master Created 7 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/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);
};

Powered by Google App Engine
This is Rietveld 408576698