summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-15 21:16:26 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-15 21:16:26 +0000
commit288a3bca50879ab24fe145126622be3c41cfc9f9 (patch)
treef0bd68156ac4c96d824a1267c7d22ca925576526
parent8a46d04dd39e7ac4b4ef88c3bfbad74a34fd2e58 (diff)
downloadchromium_src-288a3bca50879ab24fe145126622be3c41cfc9f9.zip
chromium_src-288a3bca50879ab24fe145126622be3c41cfc9f9.tar.gz
chromium_src-288a3bca50879ab24fe145126622be3c41cfc9f9.tar.bz2
Revert 256987 "Merge 256982 "Merge 256981 "Verify FormatType in ..."
> Merge 256982 "Merge 256981 "Verify FormatType in ScopedClipboard..." > > > Merge 256981 "Verify FormatType in ScopedClipboardWriter::WriteP..." > > > > > Verify FormatType in ScopedClipboardWriter::WritePickledData. > > > > > > BUG=352395 > > > R=tony@chromium.org > > > TBR=sky@chromium.org > > > > > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=256974 > > > > > > Review URL: https://codereview.chromium.org/199763002 > > > > TBR=dcheng@chromium.org > > > > Review URL: https://codereview.chromium.org/197763013 > > TBR=dcheng@chromium.org > > Review URL: https://codereview.chromium.org/199893002 TBR=inferno@chromium.org Review URL: https://codereview.chromium.org/201263002 git-svn-id: svn://svn.chromium.org/chrome/branches/1847/src@257338 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/bookmarks/bookmark_node_data.cc20
-rw-r--r--chrome/browser/bookmarks/bookmark_node_data.h9
-rw-r--r--chrome/browser/bookmarks/bookmark_node_data_views.cc17
-rw-r--r--chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc2
-rw-r--r--chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc2
-rw-r--r--ui/base/clipboard/clipboard.cc31
-rw-r--r--ui/base/clipboard/clipboard.h8
-rw-r--r--ui/base/clipboard/clipboard_android.cc12
-rw-r--r--ui/base/clipboard/clipboard_aura.cc8
-rw-r--r--ui/base/clipboard/clipboard_aurax11.cc8
-rw-r--r--ui/base/clipboard/clipboard_gtk.cc12
-rw-r--r--ui/base/clipboard/clipboard_mac.mm14
-rw-r--r--ui/base/clipboard/clipboard_win.cc6
-rw-r--r--ui/base/clipboard/scoped_clipboard_writer.cc4
14 files changed, 51 insertions, 102 deletions
diff --git a/chrome/browser/bookmarks/bookmark_node_data.cc b/chrome/browser/bookmarks/bookmark_node_data.cc
index a607819..cb254af 100644
--- a/chrome/browser/bookmarks/bookmark_node_data.cc
+++ b/chrome/browser/bookmarks/bookmark_node_data.cc
@@ -15,6 +15,9 @@
#include "chrome/browser/profiles/profile.h"
#include "ui/base/clipboard/scoped_clipboard_writer.h"
+const char* BookmarkNodeData::kClipboardFormatString =
+ "chromium/x-bookmark-entries";
+
BookmarkNodeData::Element::Element() : is_url(false), id_(0) {
}
@@ -96,15 +99,6 @@ bool BookmarkNodeData::Element::ReadFromPickle(Pickle* pickle,
// BookmarkNodeData -----------------------------------------------------------
-// static
-const ui::Clipboard::FormatType& BookmarkNodeData::GetFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- ui::Clipboard::FormatType,
- type,
- (ui::Clipboard::GetFormatType("chromium/x-bookmark-entries")));
- return type;
-}
-
BookmarkNodeData::BookmarkNodeData() {
}
@@ -124,7 +118,7 @@ BookmarkNodeData::~BookmarkNodeData() {
// static
bool BookmarkNodeData::ClipboardContainsBookmarks() {
return ui::Clipboard::GetForCurrentThread()->IsFormatAvailable(
- GetFormatType(),
+ ui::Clipboard::GetFormatType(kClipboardFormatString),
ui::CLIPBOARD_TYPE_COPY_PASTE);
}
#endif
@@ -186,14 +180,16 @@ void BookmarkNodeData::WriteToClipboard(ui::ClipboardType type) {
Pickle pickle;
WriteToPickle(NULL, &pickle);
- scw.WritePickledData(pickle, GetFormatType());
+ scw.WritePickledData(pickle,
+ ui::Clipboard::GetFormatType(kClipboardFormatString));
}
bool BookmarkNodeData::ReadFromClipboard(ui::ClipboardType type) {
DCHECK_EQ(type, ui::CLIPBOARD_TYPE_COPY_PASTE);
std::string data;
ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
- clipboard->ReadData(GetFormatType(), &data);
+ clipboard->ReadData(ui::Clipboard::GetFormatType(kClipboardFormatString),
+ &data);
if (!data.empty()) {
Pickle pickle(data.data(), data.size());
diff --git a/chrome/browser/bookmarks/bookmark_node_data.h b/chrome/browser/bookmarks/bookmark_node_data.h
index 95f55d7..fbb975e 100644
--- a/chrome/browser/bookmarks/bookmark_node_data.h
+++ b/chrome/browser/bookmarks/bookmark_node_data.h
@@ -11,7 +11,6 @@
#include "base/strings/string16.h"
#include "base/time/time.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
-#include "ui/base/clipboard/clipboard.h"
#include "ui/base/clipboard/clipboard_types.h"
#include "url/gurl.h"
@@ -82,8 +81,8 @@ struct BookmarkNodeData {
int64 id_;
};
- // The Bookmark format type for BookmarkNodeData.
- static const ui::Clipboard::FormatType& GetFormatType();
+ // The MIME type for the clipboard format for BookmarkNodeData.
+ static const char* kClipboardFormatString;
BookmarkNodeData();
@@ -93,6 +92,10 @@ struct BookmarkNodeData {
~BookmarkNodeData();
+#if defined(TOOLKIT_VIEWS)
+ static const ui::OSExchangeData::CustomFormat& GetBookmarkCustomFormat();
+#endif
+
static bool ClipboardContainsBookmarks();
// Reads bookmarks from the given vector.
diff --git a/chrome/browser/bookmarks/bookmark_node_data_views.cc b/chrome/browser/bookmarks/bookmark_node_data_views.cc
index 19a63ee..87b8cb4 100644
--- a/chrome/browser/bookmarks/bookmark_node_data_views.cc
+++ b/chrome/browser/bookmarks/bookmark_node_data_views.cc
@@ -10,6 +10,17 @@
#include "content/public/common/url_constants.h"
#include "ui/base/clipboard/clipboard.h"
+// static
+const ui::OSExchangeData::CustomFormat&
+BookmarkNodeData::GetBookmarkCustomFormat() {
+ CR_DEFINE_STATIC_LOCAL(
+ ui::OSExchangeData::CustomFormat,
+ format,
+ (ui::Clipboard::GetFormatType(BookmarkNodeData::kClipboardFormatString)));
+
+ return format;
+}
+
void BookmarkNodeData::Write(Profile* profile, ui::OSExchangeData* data) const {
DCHECK(data);
@@ -26,7 +37,7 @@ void BookmarkNodeData::Write(Profile* profile, ui::OSExchangeData* data) const {
Pickle data_pickle;
WriteToPickle(profile, &data_pickle);
- data->SetPickledData(GetFormatType(), data_pickle);
+ data->SetPickledData(GetBookmarkCustomFormat(), data_pickle);
}
bool BookmarkNodeData::Read(const ui::OSExchangeData& data) {
@@ -34,9 +45,9 @@ bool BookmarkNodeData::Read(const ui::OSExchangeData& data) {
profile_path_.clear();
- if (data.HasCustomFormat(GetFormatType())) {
+ if (data.HasCustomFormat(GetBookmarkCustomFormat())) {
Pickle drag_data_pickle;
- if (data.GetPickledData(GetFormatType(), &drag_data_pickle)) {
+ if (data.GetPickledData(GetBookmarkCustomFormat(), &drag_data_pickle)) {
if (!ReadFromPickle(&drag_data_pickle))
return false;
}
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
index d5447f9..6aa0130 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -785,7 +785,7 @@ bool BookmarkBarView::GetDropFormats(
if (!model_ || !model_->loaded())
return false;
*formats = ui::OSExchangeData::URL;
- custom_formats->insert(BookmarkNodeData::GetFormatType());
+ custom_formats->insert(BookmarkNodeData::GetBookmarkCustomFormat());
return true;
}
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc
index 539c6fe..e7decf8a 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc
@@ -154,7 +154,7 @@ bool BookmarkMenuDelegate::GetDropFormats(
int* formats,
std::set<ui::OSExchangeData::CustomFormat>* custom_formats) {
*formats = ui::OSExchangeData::URL;
- custom_formats->insert(BookmarkNodeData::GetFormatType());
+ custom_formats->insert(BookmarkNodeData::GetBookmarkCustomFormat());
return true;
}
diff --git a/ui/base/clipboard/clipboard.cc b/ui/base/clipboard/clipboard.cc
index 4c9189a..c71d5b9 100644
--- a/ui/base/clipboard/clipboard.cc
+++ b/ui/base/clipboard/clipboard.cc
@@ -6,7 +6,6 @@
#include <iterator>
#include <limits>
-#include <set>
#include "base/lazy_instance.h"
#include "base/logging.h"
@@ -52,14 +51,6 @@ static base::LazyInstance<ClipboardMap> g_clipboard_map =
static base::LazyInstance<base::Lock>::Leaky
g_clipboard_map_lock = LAZY_INSTANCE_INITIALIZER;
-// Set of registered custom formats.
-static base::LazyInstance<std::set<Clipboard::FormatType> >
- g_registered_formats = LAZY_INSTANCE_INITIALIZER;
-
-// Mutex that controls access to |g_registered_formats|.
-static base::LazyInstance<base::Lock>::Leaky g_registered_formats_lock =
- LAZY_INSTANCE_INITIALIZER;
-
} // namespace
// static
@@ -114,28 +105,6 @@ void Clipboard::DestroyClipboardForCurrentThread() {
}
}
-// static
-Clipboard::FormatType Clipboard::GetFormatType(
- const std::string& format_string) {
- FormatType format = GetFormatTypeInternal(format_string);
- {
- base::AutoLock lock(g_registered_formats_lock.Get());
- g_registered_formats.Get().insert(format);
- }
- return format;
-}
-
-bool Clipboard::IsRegisteredFormatType(const FormatType& format) {
- // Terrible hack to force web/pepper custom types to be registered.
- // TODO(dcheng): There's got to a better way...
- GetWebCustomDataFormatType();
- GetPepperCustomDataFormatType();
-
- base::AutoLock lock(g_registered_formats_lock.Get());
- const std::set<FormatType>& registered_formats = g_registered_formats.Get();
- return registered_formats.find(format) != registered_formats.end();
-}
-
void Clipboard::DispatchObject(ObjectType type, const ObjectMapParams& params) {
// All types apart from CBF_WEBKIT need at least 1 non-empty param.
if (type != CBF_WEBKIT && (params.empty() || params[0].empty()))
diff --git a/ui/base/clipboard/clipboard.h b/ui/base/clipboard/clipboard.h
index 09a4584..b59a73c 100644
--- a/ui/base/clipboard/clipboard.h
+++ b/ui/base/clipboard/clipboard.h
@@ -83,7 +83,10 @@ class UI_BASE_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) {
std::string Serialize() const;
static FormatType Deserialize(const std::string& serialization);
+#if defined(OS_WIN) || defined(USE_AURA)
+ // FormatType can be used in a set on some platforms.
bool operator<(const FormatType& other) const;
+#endif
#if defined(OS_WIN)
const FORMATETC& ToFormatEtc() const { return data_; }
@@ -270,9 +273,6 @@ class UI_BASE_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) {
// limitiations, |format_string| must never be controlled by the user.
static FormatType GetFormatType(const std::string& format_string);
- // Returns true if the |format| was registered with GetFormatType().
- static bool IsRegisteredFormatType(const FormatType& format);
-
// Get format identifiers for various types.
static const FormatType& GetUrlFormatType();
static const FormatType& GetUrlWFormatType();
@@ -317,8 +317,6 @@ class UI_BASE_EXPORT Clipboard : NON_EXPORTED_BASE(public base::ThreadChecker) {
Clipboard();
~Clipboard();
- static FormatType GetFormatTypeInternal(const std::string& format_string);
-
void DispatchObject(ObjectType type, const ObjectMapParams& params);
void WriteText(const char* text_data, size_t text_len);
diff --git a/ui/base/clipboard/clipboard_android.cc b/ui/base/clipboard/clipboard_android.cc
index f8feadc..e5e2a96 100644
--- a/ui/base/clipboard/clipboard_android.cc
+++ b/ui/base/clipboard/clipboard_android.cc
@@ -198,10 +198,6 @@ Clipboard::FormatType Clipboard::FormatType::Deserialize(
return FormatType(serialization);
}
-bool Clipboard::FormatType::operator<(const FormatType& other) const {
- return data_ < other.data_;
-}
-
bool Clipboard::FormatType::Equals(const FormatType& other) const {
return data_ == other.data_;
}
@@ -339,7 +335,7 @@ void Clipboard::ReadData(const Clipboard::FormatType& format,
}
// static
-Clipboard::FormatType Clipboard::GetFormatTypeInternal(
+Clipboard::FormatType Clipboard::GetFormatType(
const std::string& format_string) {
return FormatType::Deserialize(format_string);
}
@@ -382,15 +378,13 @@ const Clipboard::FormatType& Clipboard::GetBitmapFormatType() {
// static
const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypeWebCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData));
return type;
}
// static
const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypePepperCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData));
return type;
}
diff --git a/ui/base/clipboard/clipboard_aura.cc b/ui/base/clipboard/clipboard_aura.cc
index cd69237..2c787f7 100644
--- a/ui/base/clipboard/clipboard_aura.cc
+++ b/ui/base/clipboard/clipboard_aura.cc
@@ -601,7 +601,7 @@ void Clipboard::WriteData(const FormatType& format,
}
// static
-Clipboard::FormatType Clipboard::GetFormatTypeInternal(
+Clipboard::FormatType Clipboard::GetFormatType(
const std::string& format_string) {
return FormatType::Deserialize(format_string);
}
@@ -665,15 +665,13 @@ const Clipboard::FormatType& Clipboard::GetWebKitSmartPasteFormatType() {
// static
const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypeWebCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData));
return type;
}
// static
const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypePepperCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData));
return type;
}
diff --git a/ui/base/clipboard/clipboard_aurax11.cc b/ui/base/clipboard/clipboard_aurax11.cc
index 2ea2729..4588cc9 100644
--- a/ui/base/clipboard/clipboard_aurax11.cc
+++ b/ui/base/clipboard/clipboard_aurax11.cc
@@ -791,7 +791,7 @@ void Clipboard::WriteData(const FormatType& format,
}
// static
-Clipboard::FormatType Clipboard::GetFormatTypeInternal(
+Clipboard::FormatType Clipboard::GetFormatType(
const std::string& format_string) {
return FormatType::Deserialize(format_string);
}
@@ -855,15 +855,13 @@ const Clipboard::FormatType& Clipboard::GetWebKitSmartPasteFormatType() {
// static
const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypeWebCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData));
return type;
}
// static
const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypePepperCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData));
return type;
}
diff --git a/ui/base/clipboard/clipboard_gtk.cc b/ui/base/clipboard/clipboard_gtk.cc
index fddd86b..8f81911 100644
--- a/ui/base/clipboard/clipboard_gtk.cc
+++ b/ui/base/clipboard/clipboard_gtk.cc
@@ -202,10 +202,6 @@ Clipboard::FormatType Clipboard::FormatType::Deserialize(
return FormatType(serialization);
}
-bool Clipboard::FormatType::operator<(const FormatType& other) const {
- return GdkAtomToString(data_) < GdkAtomToString(other.data_);
-}
-
bool Clipboard::FormatType::Equals(const FormatType& other) const {
return data_ == other.data_;
}
@@ -596,7 +592,7 @@ uint64 Clipboard::GetSequenceNumber(ClipboardType type) {
}
//static
-Clipboard::FormatType Clipboard::GetFormatTypeInternal(
+Clipboard::FormatType Clipboard::GetFormatType(
const std::string& format_string) {
return FormatType::Deserialize(format_string);
}
@@ -649,15 +645,13 @@ const Clipboard::FormatType& Clipboard::GetWebKitSmartPasteFormatType() {
// static
const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypeWebCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypeWebCustomData));
return type;
}
// static
const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType(kMimeTypePepperCustomData)));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kMimeTypePepperCustomData));
return type;
}
diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm
index 9394dc7..0d0b2fa 100644
--- a/ui/base/clipboard/clipboard_mac.mm
+++ b/ui/base/clipboard/clipboard_mac.mm
@@ -84,10 +84,6 @@ Clipboard::FormatType Clipboard::FormatType::Deserialize(
return FormatType(base::SysUTF8ToNSString(serialization));
}
-bool Clipboard::FormatType::operator<(const FormatType& other) const {
- return [data_ compare:other.data_] == NSOrderedAscending;
-}
-
Clipboard::Clipboard() {
DCHECK(CalledOnValidThread());
}
@@ -367,7 +363,7 @@ void Clipboard::ReadData(const FormatType& format, std::string* result) const {
}
// static
-Clipboard::FormatType Clipboard::GetFormatTypeInternal(
+Clipboard::FormatType Clipboard::GetFormatType(
const std::string& format_string) {
return FormatType::Deserialize(format_string);
}
@@ -431,17 +427,13 @@ const Clipboard::FormatType& Clipboard::GetWebKitSmartPasteFormatType() {
// static
const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType, type, (GetFormatType([kWebCustomDataPboardType UTF8String])));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kWebCustomDataPboardType));
return type;
}
// static
const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
- CR_DEFINE_STATIC_LOCAL(
- FormatType,
- type,
- (GetFormatType([kPepperCustomDataPboardType UTF8String])));
+ CR_DEFINE_STATIC_LOCAL(FormatType, type, (kPepperCustomDataPboardType));
return type;
}
diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc
index 1f40840..e97ca07 100644
--- a/ui/base/clipboard/clipboard_win.cc
+++ b/ui/base/clipboard/clipboard_win.cc
@@ -677,7 +677,7 @@ void Clipboard::ParseBookmarkClipboardFormat(const base::string16& bookmark,
}
// static
-Clipboard::FormatType Clipboard::GetFormatTypeInternal(
+Clipboard::FormatType Clipboard::GetFormatType(
const std::string& format_string) {
return FormatType(
::RegisterClipboardFormat(base::ASCIIToWide(format_string).c_str()));
@@ -802,7 +802,7 @@ const Clipboard::FormatType& Clipboard::GetWebCustomDataFormatType() {
CR_DEFINE_STATIC_LOCAL(
FormatType,
type,
- (GetFormatType("Chromium Web Custom MIME Data Format")));
+ (::RegisterClipboardFormat(L"Chromium Web Custom MIME Data Format")));
return type;
}
@@ -811,7 +811,7 @@ const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
CR_DEFINE_STATIC_LOCAL(
FormatType,
type,
- (GetFormatType("Chromium Pepper MIME Data Format")));
+ (::RegisterClipboardFormat(L"Chromium Pepper MIME Data Format")));
return type;
}
diff --git a/ui/base/clipboard/scoped_clipboard_writer.cc b/ui/base/clipboard/scoped_clipboard_writer.cc
index 884e5f7..380b8d2 100644
--- a/ui/base/clipboard/scoped_clipboard_writer.cc
+++ b/ui/base/clipboard/scoped_clipboard_writer.cc
@@ -91,10 +91,6 @@ void ScopedClipboardWriter::WriteWebSmartPaste() {
void ScopedClipboardWriter::WritePickledData(
const Pickle& pickle, const Clipboard::FormatType& format) {
- // |format| may originate from the renderer, so sanity check it.
- if (!Clipboard::IsRegisteredFormatType(format))
- return;
-
std::string format_string = format.Serialize();
Clipboard::ObjectMapParam format_parameter(format_string.begin(),
format_string.end());