diff options
author | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-15 21:16:26 +0000 |
---|---|---|
committer | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-15 21:16:26 +0000 |
commit | 288a3bca50879ab24fe145126622be3c41cfc9f9 (patch) | |
tree | f0bd68156ac4c96d824a1267c7d22ca925576526 | |
parent | 8a46d04dd39e7ac4b4ef88c3bfbad74a34fd2e58 (diff) | |
download | chromium_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.cc | 20 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_node_data.h | 9 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_node_data_views.cc | 17 | ||||
-rw-r--r-- | chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc | 2 | ||||
-rw-r--r-- | chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc | 2 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard.cc | 31 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard.h | 8 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_android.cc | 12 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_aura.cc | 8 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_aurax11.cc | 8 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_gtk.cc | 12 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_mac.mm | 14 | ||||
-rw-r--r-- | ui/base/clipboard/clipboard_win.cc | 6 | ||||
-rw-r--r-- | ui/base/clipboard/scoped_clipboard_writer.cc | 4 |
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()); |