diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/ui/base/dragdrop | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/ui/base/dragdrop')
22 files changed, 176 insertions, 142 deletions
diff --git a/chromium/ui/base/dragdrop/cocoa_dnd_util.h b/chromium/ui/base/dragdrop/cocoa_dnd_util.h index 1945c177293..1daf898b21c 100644 --- a/chromium/ui/base/dragdrop/cocoa_dnd_util.h +++ b/chromium/ui/base/dragdrop/cocoa_dnd_util.h @@ -9,8 +9,8 @@ #include <vector> +#include "base/component_export.h" #include "base/strings/string16.h" -#include "ui/base/ui_base_export.h" class GURL; @@ -20,24 +20,25 @@ namespace ui { // any data associated with this type; it's only used to ensure that Chrome // supports any drag initiated inside of Chrome, whether or not data has been // associated with it. -UI_BASE_EXPORT extern NSString* const kChromeDragDummyPboardType; +COMPONENT_EXPORT(UI_BASE) extern NSString* const kChromeDragDummyPboardType; // Mail.app and TextEdit accept drags that have both HTML and image flavors on // them, but don't process them correctly <http://crbug.com/55879>. Therefore, // if there is an image flavor, don't put the HTML data on as HTML, but rather // put it on as this Chrome-only flavor. External apps won't see HTML but // Chrome will know enough to read it as HTML. <http://crbug.com/55879> -UI_BASE_EXPORT extern NSString* const kChromeDragImageHTMLPboardType; +COMPONENT_EXPORT(UI_BASE) extern NSString* const kChromeDragImageHTMLPboardType; // Populates the |url| and |title| with URL data in |pboard|. There may be more // than one, but we only handle dropping the first. |url| must not be |NULL|; // |title| is an optional parameter. Returns |YES| if URL data was obtained from // the pasteboard, |NO| otherwise. If |convert_filenames| is |YES|, the function // will also attempt to convert filenames in |pboard| to file URLs. -UI_BASE_EXPORT BOOL PopulateURLAndTitleFromPasteboard(GURL* url, - base::string16* title, - NSPasteboard* pboard, - BOOL convert_filenames); +COMPONENT_EXPORT(UI_BASE) +BOOL PopulateURLAndTitleFromPasteboard(GURL* url, + base::string16* title, + NSPasteboard* pboard, + BOOL convert_filenames); } // namespace ui diff --git a/chromium/ui/base/dragdrop/drag_drop_types.h b/chromium/ui/base/dragdrop/drag_drop_types.h index ddb726fe53a..af2fad11112 100644 --- a/chromium/ui/base/dragdrop/drag_drop_types.h +++ b/chromium/ui/base/dragdrop/drag_drop_types.h @@ -7,12 +7,12 @@ #include <stdint.h> +#include "base/component_export.h" #include "build/build_config.h" -#include "ui/base/ui_base_export.h" namespace ui { -class UI_BASE_EXPORT DragDropTypes { +class COMPONENT_EXPORT(UI_BASE) DragDropTypes { public: enum DragOperation { DRAG_NONE = 0, diff --git a/chromium/ui/base/dragdrop/drag_source_win.cc b/chromium/ui/base/dragdrop/drag_source_win.cc index fe201a8d9c1..c27409139ee 100644 --- a/chromium/ui/base/dragdrop/drag_source_win.cc +++ b/chromium/ui/base/dragdrop/drag_source_win.cc @@ -24,7 +24,7 @@ HRESULT DragSourceWin::QueryContinueDrag(BOOL escape_pressed, DWORD key_state) { return DRAGDROP_S_CANCEL; } - if (!(key_state & MK_LBUTTON)) { + if (!(key_state & MK_LBUTTON) && !(key_state & MK_RBUTTON)) { OnDragSourceDrop(); return DRAGDROP_S_DROP; } diff --git a/chromium/ui/base/dragdrop/drag_source_win.h b/chromium/ui/base/dragdrop/drag_source_win.h index 5634d7082c1..466ec9672ad 100644 --- a/chromium/ui/base/dragdrop/drag_source_win.h +++ b/chromium/ui/base/dragdrop/drag_source_win.h @@ -8,9 +8,9 @@ #include <objidl.h> #include <wrl/implements.h> +#include "base/component_export.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "ui/base/ui_base_export.h" namespace ui { @@ -26,7 +26,8 @@ class DragSourceWin IDropSource> { public: // Factory method to avoid exporting the class and all it derives from. - static UI_BASE_EXPORT Microsoft::WRL::ComPtr<DragSourceWin> Create(); + static COMPONENT_EXPORT( + UI_BASE) Microsoft::WRL::ComPtr<DragSourceWin> Create(); // Use Create() to construct these objects. Direct calls to the constructor // are an error - it is only public because a WRL helper function creates the diff --git a/chromium/ui/base/dragdrop/drop_target_event.h b/chromium/ui/base/dragdrop/drop_target_event.h index 47f1b4e09ae..5a8abf1f40c 100644 --- a/chromium/ui/base/dragdrop/drop_target_event.h +++ b/chromium/ui/base/dragdrop/drop_target_event.h @@ -5,6 +5,7 @@ #ifndef UI_BASE_DRAGDROP_DROP_TARGET_EVENT_H_ #define UI_BASE_DRAGDROP_DROP_TARGET_EVENT_H_ +#include "base/component_export.h" #include "base/macros.h" #include "ui/base/dragdrop/os_exchange_data.h" #include "ui/events/event.h" @@ -13,7 +14,7 @@ namespace ui { // Note: This object must not outlive the OSExchangeData used to construct it, // as it stores that by reference. -class UI_BASE_EXPORT DropTargetEvent : public LocatedEvent { +class COMPONENT_EXPORT(UI_BASE) DropTargetEvent : public LocatedEvent { public: DropTargetEvent(const OSExchangeData& data, const gfx::PointF& location, diff --git a/chromium/ui/base/dragdrop/drop_target_win.h b/chromium/ui/base/dragdrop/drop_target_win.h index 6470b34c891..18409b41d36 100644 --- a/chromium/ui/base/dragdrop/drop_target_win.h +++ b/chromium/ui/base/dragdrop/drop_target_win.h @@ -7,9 +7,9 @@ #include <objidl.h> +#include "base/component_export.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "ui/base/ui_base_export.h" // Windows interface. struct IDropTargetHelper; @@ -25,7 +25,7 @@ namespace ui { // before the HWND is deleted too. // // This class is meant to be used in a STA and is not multithread-safe. -class UI_BASE_EXPORT DropTargetWin : public IDropTarget { +class COMPONENT_EXPORT(UI_BASE) DropTargetWin : public IDropTarget { public: DropTargetWin(); virtual ~DropTargetWin(); diff --git a/chromium/ui/base/dragdrop/os_exchange_data.cc b/chromium/ui/base/dragdrop/os_exchange_data.cc index 727deb75a01..f8c4f3e8929 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data.cc @@ -99,7 +99,7 @@ bool OSExchangeData::HasAnyFormat( const std::set<ClipboardFormatType>& format_types) const { if ((formats & STRING) != 0 && HasString()) return true; - if ((formats & URL) != 0 && HasURL(CONVERT_FILENAMES)) + if ((formats & URL) != 0 && HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)) return true; #if defined(OS_WIN) if ((formats & FILE_CONTENTS) != 0 && provider_->HasFileContents()) diff --git a/chromium/ui/base/dragdrop/os_exchange_data.h b/chromium/ui/base/dragdrop/os_exchange_data.h index 58b160be349..bd851a065fc 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data.h +++ b/chromium/ui/base/dragdrop/os_exchange_data.h @@ -18,10 +18,10 @@ #endif #include "base/callback_forward.h" +#include "base/component_export.h" #include "base/files/file_path.h" #include "base/macros.h" #include "ui/base/dragdrop/os_exchange_data_provider.h" -#include "ui/base/ui_base_export.h" class GURL; @@ -48,7 +48,7 @@ struct FileInfo; // TabContentsViewGtk uses a different class to handle drag support that does // not use OSExchangeData. As such, file contents and html support is only // compiled on windows. -class UI_BASE_EXPORT OSExchangeData { +class COMPONENT_EXPORT(UI_BASE) OSExchangeData { public: // Enumeration of the known formats. enum Format { diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider.h b/chromium/ui/base/dragdrop/os_exchange_data_provider.h index 2e45ee878fb..b945ec9180f 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider.h +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider.h @@ -33,8 +33,7 @@ namespace ui { // Controls whether or not filenames should be converted to file: URLs when // getting a URL. -// TODO(crbug.com/1070138): convert to enum class. -enum FilenameToURLPolicy { +enum class FilenameToURLPolicy { CONVERT_FILENAMES, DO_NOT_CONVERT_FILENAMES, }; diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc b/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc index 52efa7c8e6a..fcf63aac986 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.cc @@ -13,7 +13,7 @@ #if defined(USE_OZONE) #include "ui/base/dragdrop/os_exchange_data_provider_factory_ozone.h" #endif -#include "ui/base/dragdrop/os_exchange_data_provider_aura.h" +#include "ui/base/dragdrop/os_exchange_data_provider_non_backed.h" #elif defined(OS_MACOSX) #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h" #elif defined(OS_WIN) @@ -39,7 +39,7 @@ OSExchangeDataProviderFactory::CreateProvider() { return provider; } #endif - return std::make_unique<OSExchangeDataProviderAura>(); + return std::make_unique<OSExchangeDataProviderNonBacked>(); #elif defined(OS_MACOSX) return BuildOSExchangeDataProviderMac(); #elif defined(OS_WIN) diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.h b/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.h index b3fbd31a564..72ac48751a5 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.h +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_factory.h @@ -7,13 +7,13 @@ #include <memory> +#include "base/component_export.h" #include "ui/base/dragdrop/os_exchange_data_provider.h" -#include "ui/base/ui_base_export.h" namespace ui { // Builds platform specific OSExchangeDataProviders. -class UI_BASE_EXPORT OSExchangeDataProviderFactory { +class COMPONENT_EXPORT(UI_BASE) OSExchangeDataProviderFactory { public: // Creates a Provider based on the current platform. static std::unique_ptr<OSExchangeDataProvider> CreateProvider(); diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.h b/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.h index 11465f8cc86..8fb6a3ad5c6 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.h +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.h @@ -7,6 +7,7 @@ #include <memory> +#include "base/component_export.h" #include "base/mac/scoped_nsobject.h" #include "base/macros.h" #include "base/memory/ref_counted.h" @@ -25,7 +26,8 @@ namespace ui { // OSExchangeDataProvider implementation for Mac. -class UI_BASE_EXPORT OSExchangeDataProviderMac : public OSExchangeDataProvider { +class COMPONENT_EXPORT(UI_BASE) OSExchangeDataProviderMac + : public OSExchangeDataProvider { public: ~OSExchangeDataProviderMac() override; diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.mm b/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.mm index 4c7cbf41185..b7f144452f3 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.mm +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_mac.mm @@ -193,7 +193,8 @@ bool OSExchangeDataProviderMac::GetString(base::string16* data) const { // There was no NSString, check for an NSURL. GURL url; base::string16 title; - bool result = GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &url, &title); + bool result = GetURLAndTitle(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, + &url, &title); if (result) *data = base::UTF8ToUTF16(url.spec()); @@ -218,7 +219,8 @@ bool OSExchangeDataProviderMac::GetURLAndTitle(FilenameToURLPolicy policy, // the trailing slashes off of paths and always returns the last path element // as the title whereas no path conversion nor title is wanted. base::FilePath path; - if (policy != DO_NOT_CONVERT_FILENAMES && GetFilename(&path)) { + if (policy != FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES && + GetFilename(&path)) { NSURL* fileUrl = [NSURL fileURLWithPath:base::SysUTF8ToNSString(path.value())]; *url = diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_aura.cc b/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.cc index 7131bc01992..a4964922b00 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_aura.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.cc @@ -2,49 +2,53 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ui/base/dragdrop/os_exchange_data_provider_aura.h" +#include "ui/base/dragdrop/os_exchange_data_provider_non_backed.h" + +#include <memory> #include "base/check.h" -#include "base/memory/ptr_util.h" +#include "base/files/file_path.h" +#include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "net/base/filename_util.h" #include "ui/base/clipboard/clipboard_format_type.h" #include "ui/base/dragdrop/file_info/file_info.h" +#include "ui/base/dragdrop/os_exchange_data.h" +#include "url/gurl.h" namespace ui { -OSExchangeDataProviderAura::OSExchangeDataProviderAura() - : formats_(0) { -} +OSExchangeDataProviderNonBacked::OSExchangeDataProviderNonBacked() = default; -OSExchangeDataProviderAura::~OSExchangeDataProviderAura() = default; +OSExchangeDataProviderNonBacked::~OSExchangeDataProviderNonBacked() = default; -std::unique_ptr<OSExchangeDataProvider> OSExchangeDataProviderAura::Clone() +std::unique_ptr<OSExchangeDataProvider> OSExchangeDataProviderNonBacked::Clone() const { - OSExchangeDataProviderAura* ret = new OSExchangeDataProviderAura(); - ret->formats_ = formats_; - ret->string_ = string_; - ret->url_ = url_; - ret->title_ = title_; - ret->filenames_ = filenames_; - ret->pickle_data_ = pickle_data_; + auto clone = std::make_unique<OSExchangeDataProviderNonBacked>(); + + clone->formats_ = formats_; + clone->string_ = string_; + clone->url_ = url_; + clone->title_ = title_; + clone->filenames_ = filenames_; + clone->pickle_data_ = pickle_data_; // We skip copying the drag images. - ret->html_ = html_; - ret->base_url_ = base_url_; + clone->html_ = html_; + clone->base_url_ = base_url_; - return base::WrapUnique<OSExchangeDataProvider>(ret); + return clone; } -void OSExchangeDataProviderAura::MarkOriginatedFromRenderer() { +void OSExchangeDataProviderNonBacked::MarkOriginatedFromRenderer() { // TODO(dcheng): Currently unneeded because ChromeOS Aura correctly separates // URL and filename metadata, and does not implement the DownloadURL protocol. } -bool OSExchangeDataProviderAura::DidOriginateFromRenderer() const { +bool OSExchangeDataProviderNonBacked::DidOriginateFromRenderer() const { return false; } -void OSExchangeDataProviderAura::SetString(const base::string16& data) { +void OSExchangeDataProviderNonBacked::SetString(const base::string16& data) { if (HasString()) return; @@ -52,8 +56,8 @@ void OSExchangeDataProviderAura::SetString(const base::string16& data) { formats_ |= OSExchangeData::STRING; } -void OSExchangeDataProviderAura::SetURL(const GURL& url, - const base::string16& title) { +void OSExchangeDataProviderNonBacked::SetURL(const GURL& url, + const base::string16& title) { url_ = url; title_ = title; formats_ |= OSExchangeData::URL; @@ -61,39 +65,41 @@ void OSExchangeDataProviderAura::SetURL(const GURL& url, SetString(base::UTF8ToUTF16(url.spec())); } -void OSExchangeDataProviderAura::SetFilename(const base::FilePath& path) { +void OSExchangeDataProviderNonBacked::SetFilename(const base::FilePath& path) { filenames_.clear(); filenames_.push_back(FileInfo(path, base::FilePath())); formats_ |= OSExchangeData::FILE_NAME; } -void OSExchangeDataProviderAura::SetFilenames( +void OSExchangeDataProviderNonBacked::SetFilenames( const std::vector<FileInfo>& filenames) { filenames_ = filenames; formats_ |= OSExchangeData::FILE_NAME; } -void OSExchangeDataProviderAura::SetPickledData( +void OSExchangeDataProviderNonBacked::SetPickledData( const ClipboardFormatType& format, const base::Pickle& data) { pickle_data_[format] = data; formats_ |= OSExchangeData::PICKLED_DATA; } -bool OSExchangeDataProviderAura::GetString(base::string16* data) const { +bool OSExchangeDataProviderNonBacked::GetString(base::string16* data) const { if ((formats_ & OSExchangeData::STRING) == 0) return false; *data = string_; return true; } -bool OSExchangeDataProviderAura::GetURLAndTitle(FilenameToURLPolicy policy, - GURL* url, - base::string16* title) const { +bool OSExchangeDataProviderNonBacked::GetURLAndTitle( + FilenameToURLPolicy policy, + GURL* url, + base::string16* title) const { if ((formats_ & OSExchangeData::URL) == 0) { title->clear(); return GetPlainTextURL(url) || - (policy == CONVERT_FILENAMES && GetFileURL(url)); + (policy == FilenameToURLPolicy::CONVERT_FILENAMES && + GetFileURL(url)); } if (!url_.is_valid()) @@ -104,7 +110,7 @@ bool OSExchangeDataProviderAura::GetURLAndTitle(FilenameToURLPolicy policy, return true; } -bool OSExchangeDataProviderAura::GetFilename(base::FilePath* path) const { +bool OSExchangeDataProviderNonBacked::GetFilename(base::FilePath* path) const { if ((formats_ & OSExchangeData::FILE_NAME) == 0) return false; DCHECK(!filenames_.empty()); @@ -112,7 +118,7 @@ bool OSExchangeDataProviderAura::GetFilename(base::FilePath* path) const { return true; } -bool OSExchangeDataProviderAura::GetFilenames( +bool OSExchangeDataProviderNonBacked::GetFilenames( std::vector<FileInfo>* filenames) const { if ((formats_ & OSExchangeData::FILE_NAME) == 0) return false; @@ -120,10 +126,10 @@ bool OSExchangeDataProviderAura::GetFilenames( return true; } -bool OSExchangeDataProviderAura::GetPickledData( +bool OSExchangeDataProviderNonBacked::GetPickledData( const ClipboardFormatType& format, base::Pickle* data) const { - PickleData::const_iterator i = pickle_data_.find(format); + const auto i = pickle_data_.find(format); if (i == pickle_data_.end()) return false; @@ -131,37 +137,38 @@ bool OSExchangeDataProviderAura::GetPickledData( return true; } -bool OSExchangeDataProviderAura::HasString() const { +bool OSExchangeDataProviderNonBacked::HasString() const { return (formats_ & OSExchangeData::STRING) != 0; } -bool OSExchangeDataProviderAura::HasURL(FilenameToURLPolicy policy) const { +bool OSExchangeDataProviderNonBacked::HasURL(FilenameToURLPolicy policy) const { if ((formats_ & OSExchangeData::URL) != 0) { return true; } // No URL, see if we have plain text that can be parsed as a URL. - return GetPlainTextURL(NULL) || - (policy == CONVERT_FILENAMES && GetFileURL(nullptr)); + return GetPlainTextURL(nullptr) || + (policy == FilenameToURLPolicy::CONVERT_FILENAMES && + GetFileURL(nullptr)); } -bool OSExchangeDataProviderAura::HasFile() const { +bool OSExchangeDataProviderNonBacked::HasFile() const { return (formats_ & OSExchangeData::FILE_NAME) != 0; } -bool OSExchangeDataProviderAura::HasCustomFormat( +bool OSExchangeDataProviderNonBacked::HasCustomFormat( const ClipboardFormatType& format) const { return base::Contains(pickle_data_, format); } -void OSExchangeDataProviderAura::SetHtml(const base::string16& html, - const GURL& base_url) { +void OSExchangeDataProviderNonBacked::SetHtml(const base::string16& html, + const GURL& base_url) { formats_ |= OSExchangeData::HTML; html_ = html; base_url_ = base_url; } -bool OSExchangeDataProviderAura::GetHtml(base::string16* html, - GURL* base_url) const { +bool OSExchangeDataProviderNonBacked::GetHtml(base::string16* html, + GURL* base_url) const { if ((formats_ & OSExchangeData::HTML) == 0) return false; *html = html_; @@ -169,26 +176,26 @@ bool OSExchangeDataProviderAura::GetHtml(base::string16* html, return true; } -bool OSExchangeDataProviderAura::HasHtml() const { +bool OSExchangeDataProviderNonBacked::HasHtml() const { return ((formats_ & OSExchangeData::HTML) != 0); } -void OSExchangeDataProviderAura::SetDragImage( +void OSExchangeDataProviderNonBacked::SetDragImage( const gfx::ImageSkia& image, const gfx::Vector2d& cursor_offset) { drag_image_ = image; drag_image_offset_ = cursor_offset; } -gfx::ImageSkia OSExchangeDataProviderAura::GetDragImage() const { +gfx::ImageSkia OSExchangeDataProviderNonBacked::GetDragImage() const { return drag_image_; } -gfx::Vector2d OSExchangeDataProviderAura::GetDragImageOffset() const { +gfx::Vector2d OSExchangeDataProviderNonBacked::GetDragImageOffset() const { return drag_image_offset_; } -bool OSExchangeDataProviderAura::GetFileURL(GURL* url) const { +bool OSExchangeDataProviderNonBacked::GetFileURL(GURL* url) const { base::FilePath file_path; if (!GetFilename(&file_path)) return false; @@ -202,7 +209,7 @@ bool OSExchangeDataProviderAura::GetFileURL(GURL* url) const { return true; } -bool OSExchangeDataProviderAura::GetPlainTextURL(GURL* url) const { +bool OSExchangeDataProviderNonBacked::GetPlainTextURL(GURL* url) const { if ((formats_ & OSExchangeData::STRING) == 0) return false; diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_aura.h b/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.h index c535f08666a..6a15a8df69d 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_aura.h +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.h @@ -2,29 +2,39 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_AURA_H_ -#define UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_AURA_H_ +#ifndef UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_NON_BACKED_H_ +#define UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_NON_BACKED_H_ #include <map> -#include "base/files/file_path.h" -#include "base/macros.h" +#include "base/component_export.h" #include "base/pickle.h" -#include "ui/base/dragdrop/os_exchange_data.h" +#include "ui/base/dragdrop/file_info/file_info.h" +#include "ui/base/dragdrop/os_exchange_data_provider.h" #include "ui/gfx/geometry/vector2d.h" #include "ui/gfx/image/image_skia.h" #include "url/gurl.h" +namespace base { +class FilePath; +} // namespace base + namespace ui { class ClipboardFormatType; -// OSExchangeDataProvider implementation for aura on linux. -class UI_BASE_EXPORT OSExchangeDataProviderAura +// Simple OSExchangeDataProvider implementation for aura-based ports with no +// actual platform integration. So data managed by this class is exchangeable +// only among Chromium windows and is available only while it is alive. +class COMPONENT_EXPORT(UI_BASE) OSExchangeDataProviderNonBacked : public OSExchangeDataProvider { public: - OSExchangeDataProviderAura(); - ~OSExchangeDataProviderAura() override; + OSExchangeDataProviderNonBacked(); + OSExchangeDataProviderNonBacked(const OSExchangeDataProviderNonBacked&) = + delete; + OSExchangeDataProviderNonBacked& operator=( + const OSExchangeDataProviderNonBacked&) = delete; + ~OSExchangeDataProviderNonBacked() override; // Overridden from OSExchangeDataProvider: std::unique_ptr<OSExchangeDataProvider> Clone() const override; @@ -58,8 +68,6 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura gfx::Vector2d GetDragImageOffset() const override; private: - typedef std::map<ClipboardFormatType, base::Pickle> PickleData; - // Returns true if |formats_| contains a file format and the file name can be // parsed as a URL. bool GetFileURL(GURL* url) const; @@ -68,9 +76,9 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura // parsed as a URL. bool GetPlainTextURL(GURL* url) const; - // Actual formats that have been set. See comment above |known_formats_| + // Actual formats that have been set. // for details. - int formats_; + int formats_ = 0; // String contents. base::string16 string_; @@ -83,7 +91,7 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura std::vector<FileInfo> filenames_; // PICKLED_DATA contents. - PickleData pickle_data_; + std::map<ClipboardFormatType, base::Pickle> pickle_data_; // Drag image and offset data. gfx::ImageSkia drag_image_; @@ -92,10 +100,8 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura // For HTML format base::string16 html_; GURL base_url_; - - DISALLOW_COPY_AND_ASSIGN(OSExchangeDataProviderAura); }; } // namespace ui -#endif // UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_AURA_H_ +#endif // UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_NON_BACKED_H_ diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_win.cc b/chromium/ui/base/dragdrop/os_exchange_data_provider_win.cc index 9be3da2f9de..b51a0161fdf 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_win.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_win.cc @@ -542,9 +542,9 @@ bool OSExchangeDataProviderWin::GetURLAndTitle(FilenameToURLPolicy policy, GURL* url, base::string16* title) const { base::string16 url_str; - bool success = - ClipboardUtil::GetUrl(source_object_.Get(), url, title, - policy == CONVERT_FILENAMES ? true : false); + bool success = ClipboardUtil::GetUrl( + source_object_.Get(), url, title, + policy == FilenameToURLPolicy::CONVERT_FILENAMES ? true : false); if (success) { DCHECK(url->is_valid()); return true; @@ -658,7 +658,9 @@ bool OSExchangeDataProviderWin::HasString() const { bool OSExchangeDataProviderWin::HasURL(FilenameToURLPolicy policy) const { return (ClipboardUtil::HasUrl(source_object_.Get(), - policy == CONVERT_FILENAMES ? true : false) || + policy == FilenameToURLPolicy::CONVERT_FILENAMES + ? true + : false) || HasPlainTextURL(source_object_.Get())); } diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_win.h b/chromium/ui/base/dragdrop/os_exchange_data_provider_win.h index 481e18f4ab2..f160602b2da 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_win.h +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_win.h @@ -23,10 +23,10 @@ #define IDataObjectAsyncCapability IAsyncOperation #endif +#include "base/component_export.h" #include "base/macros.h" #include "ui/base/dragdrop/os_exchange_data.h" #include "ui/base/dragdrop/os_exchange_data_provider.h" -#include "ui/base/ui_base_export.h" #include "ui/gfx/geometry/vector2d.h" #include "ui/gfx/image/image_skia.h" @@ -115,7 +115,8 @@ class DataObjectImpl : public DownloadFileObserver, bool async_operation_started_; }; -class UI_BASE_EXPORT OSExchangeDataProviderWin : public OSExchangeDataProvider { +class COMPONENT_EXPORT(UI_BASE) OSExchangeDataProviderWin + : public OSExchangeDataProvider { public: // Returns true if source has plain text that is a valid url. static bool HasPlainTextURL(IDataObject* source); diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.cc b/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.cc index f336655478b..fdb28d24631 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.cc @@ -11,11 +11,12 @@ #include "ui/base/x/selection_utils.h" #include "ui/events/platform/platform_event_source.h" #include "ui/gfx/x/x11_atom_cache.h" +#include "ui/gfx/x/xproto.h" namespace ui { OSExchangeDataProviderX11::OSExchangeDataProviderX11( - XID x_window, + x11::Window x_window, const SelectionFormatMap& selection) : XOSExchangeDataProvider(x_window, selection) {} @@ -69,8 +70,9 @@ void OSExchangeDataProviderX11::SetFileContents( base::RefCountedString::TakeString(&file_contents_copy))); } -bool OSExchangeDataProviderX11::DispatchXEvent(XEvent* xev) { - if (xev->type == SelectionRequest && xev->xany.window == x_window()) { +bool OSExchangeDataProviderX11::DispatchXEvent(x11::Event* xev) { + auto* selection = xev->As<x11::SelectionRequestEvent>(); + if (selection && selection->owner == x_window()) { selection_owner().OnSelectionRequest(*xev); return true; } diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.h b/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.h index 980b384c3c5..024152eb474 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.h +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_x11.h @@ -5,18 +5,22 @@ #ifndef UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_X11_H_ #define UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_X11_H_ +#include "base/component_export.h" #include "ui/base/x/x11_os_exchange_data_provider.h" #include "ui/events/platform/x11/x11_event_source.h" +#include "ui/gfx/x/event.h" namespace ui { // OSExchangeDataProvider implementation for x11 linux. -class UI_BASE_EXPORT OSExchangeDataProviderX11 : public XOSExchangeDataProvider, - public XEventDispatcher { +class COMPONENT_EXPORT(UI_BASE) OSExchangeDataProviderX11 + : public XOSExchangeDataProvider, + public XEventDispatcher { public: // |x_window| is the window the cursor is over, and |selection| is the set of // data being offered. - OSExchangeDataProviderX11(XID x_window, const SelectionFormatMap& selection); + OSExchangeDataProviderX11(x11::Window x_window, + const SelectionFormatMap& selection); // Creates a Provider for sending drag information. This creates its own, // hidden X11 window to own send data. @@ -34,7 +38,7 @@ class UI_BASE_EXPORT OSExchangeDataProviderX11 : public XOSExchangeDataProvider, const std::string& file_contents) override; // XEventDispatcher: - bool DispatchXEvent(XEvent* xev) override; + bool DispatchXEvent(x11::Event* xev) override; private: friend class OSExchangeDataProviderX11Test; diff --git a/chromium/ui/base/dragdrop/os_exchange_data_provider_x11_unittest.cc b/chromium/ui/base/dragdrop/os_exchange_data_provider_x11_unittest.cc index 82f9c71aabd..11a7fd89a44 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_provider_x11_unittest.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_provider_x11_unittest.cc @@ -47,8 +47,8 @@ TEST_F(OSExchangeDataProviderX11Test, MozillaURL) { { GURL out_gurl; base::string16 out_str; - EXPECT_TRUE( - provider.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); + EXPECT_TRUE(provider.GetURLAndTitle( + FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); EXPECT_EQ(base::ASCIIToUTF16(kGoogleTitle), out_str); EXPECT_EQ(kGoogleURL, out_gurl.spec()); } @@ -58,8 +58,8 @@ TEST_F(OSExchangeDataProviderX11Test, MozillaURL) { { GURL out_gurl; base::string16 out_str; - EXPECT_TRUE( - provider.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); + EXPECT_TRUE(provider.GetURLAndTitle( + FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); EXPECT_EQ(base::string16(), out_str); EXPECT_EQ(kGoogleURL, out_gurl.spec()); } @@ -69,24 +69,24 @@ TEST_F(OSExchangeDataProviderX11Test, FilesArentURLs) { AddURLList(kFileURL); EXPECT_TRUE(provider.HasFile()); - EXPECT_TRUE(provider.HasURL(ui::CONVERT_FILENAMES)); - EXPECT_FALSE(provider.HasURL(ui::DO_NOT_CONVERT_FILENAMES)); + EXPECT_TRUE(provider.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); + EXPECT_FALSE(provider.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); } TEST_F(OSExchangeDataProviderX11Test, HTTPURLsArentFiles) { AddURLList(kGoogleURL); EXPECT_FALSE(provider.HasFile()); - EXPECT_TRUE(provider.HasURL(ui::CONVERT_FILENAMES)); - EXPECT_TRUE(provider.HasURL(ui::DO_NOT_CONVERT_FILENAMES)); + EXPECT_TRUE(provider.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); + EXPECT_TRUE(provider.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); } TEST_F(OSExchangeDataProviderX11Test, URIListWithBoth) { AddURLList("file:///home/user/file.txt\nhttp://www.google.com"); EXPECT_TRUE(provider.HasFile()); - EXPECT_TRUE(provider.HasURL(ui::CONVERT_FILENAMES)); - EXPECT_TRUE(provider.HasURL(ui::DO_NOT_CONVERT_FILENAMES)); + EXPECT_TRUE(provider.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); + EXPECT_TRUE(provider.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); // We should only receive the file from GetFilenames(). std::vector<FileInfo> filenames; @@ -97,8 +97,8 @@ TEST_F(OSExchangeDataProviderX11Test, URIListWithBoth) { // We should only receive the URL here. GURL out_gurl; base::string16 out_str; - EXPECT_TRUE( - provider.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); + EXPECT_TRUE(provider.GetURLAndTitle( + FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, &out_gurl, &out_str)); EXPECT_EQ(base::string16(), out_str); EXPECT_EQ(kGoogleURL, out_gurl.spec()); } @@ -108,7 +108,7 @@ TEST_F(OSExchangeDataProviderX11Test, OnlyStringURLIsUnfiltered) { provider.SetString(file_url); EXPECT_TRUE(provider.HasString()); - EXPECT_FALSE(provider.HasURL(ui::DO_NOT_CONVERT_FILENAMES)); + EXPECT_FALSE(provider.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); } TEST_F(OSExchangeDataProviderX11Test, StringAndURIListFilterString) { diff --git a/chromium/ui/base/dragdrop/os_exchange_data_unittest.cc b/chromium/ui/base/dragdrop/os_exchange_data_unittest.cc index 3c000b0f0a7..e57cc2eb849 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_unittest.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_unittest.cc @@ -48,7 +48,8 @@ TEST_F(OSExchangeDataTest, StringDataGetAndSet) { std::string url_spec = "http://www.goats.com/"; GURL url(url_spec); base::string16 title; - EXPECT_FALSE(data2.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &url, &title)); + EXPECT_FALSE(data2.GetURLAndTitle( + FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, &url, &title)); // No URLs in |data|, so url should be untouched. EXPECT_EQ(url_spec, url.spec()); } @@ -58,9 +59,9 @@ TEST_F(OSExchangeDataTest, TestURLExchangeFormats) { std::string url_spec = "http://www.google.com/"; GURL url(url_spec); base::string16 url_title = base::ASCIIToUTF16("www.google.com"); - EXPECT_FALSE(data.HasURL(DO_NOT_CONVERT_FILENAMES)); + EXPECT_FALSE(data.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); data.SetURL(url, url_title); - EXPECT_TRUE(data.HasURL(DO_NOT_CONVERT_FILENAMES)); + EXPECT_TRUE(data.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); OSExchangeData data2( std::unique_ptr<OSExchangeDataProvider>(data.provider().Clone())); @@ -68,9 +69,10 @@ TEST_F(OSExchangeDataTest, TestURLExchangeFormats) { // URL spec and title should match GURL output_url; base::string16 output_title; - EXPECT_TRUE(data2.HasURL(DO_NOT_CONVERT_FILENAMES)); - EXPECT_TRUE(data2.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &output_url, - &output_title)); + EXPECT_TRUE(data2.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); + EXPECT_TRUE( + data2.GetURLAndTitle(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, + &output_url, &output_title)); EXPECT_EQ(url_spec, output_url.spec()); EXPECT_EQ(url_title, output_title); base::string16 output_string; @@ -96,16 +98,16 @@ TEST_F(OSExchangeDataTest, URLAndString) { GURL output_url; base::string16 output_title; - EXPECT_TRUE(data.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &output_url, - &output_title)); + EXPECT_TRUE(data.GetURLAndTitle(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, + &output_url, &output_title)); EXPECT_EQ(url_spec, output_url.spec()); EXPECT_EQ(url_title, output_title); } TEST_F(OSExchangeDataTest, TestFileToURLConversion) { OSExchangeData data; - EXPECT_FALSE(data.HasURL(DO_NOT_CONVERT_FILENAMES)); - EXPECT_FALSE(data.HasURL(CONVERT_FILENAMES)); + EXPECT_FALSE(data.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); + EXPECT_FALSE(data.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); EXPECT_FALSE(data.HasFile()); base::FilePath current_directory; @@ -114,21 +116,22 @@ TEST_F(OSExchangeDataTest, TestFileToURLConversion) { data.SetFilename(current_directory); { - EXPECT_FALSE(data.HasURL(DO_NOT_CONVERT_FILENAMES)); + EXPECT_FALSE(data.HasURL(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES)); GURL actual_url; base::string16 actual_title; - EXPECT_FALSE(data.GetURLAndTitle(DO_NOT_CONVERT_FILENAMES, &actual_url, - &actual_title)); + EXPECT_FALSE( + data.GetURLAndTitle(FilenameToURLPolicy::DO_NOT_CONVERT_FILENAMES, + &actual_url, &actual_title)); EXPECT_EQ(GURL(), actual_url); EXPECT_EQ(base::string16(), actual_title); } { - EXPECT_TRUE(data.HasURL(CONVERT_FILENAMES)); + EXPECT_TRUE(data.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); GURL actual_url; base::string16 actual_title; - EXPECT_TRUE( - data.GetURLAndTitle(CONVERT_FILENAMES, &actual_url, &actual_title)); + EXPECT_TRUE(data.GetURLAndTitle(FilenameToURLPolicy::CONVERT_FILENAMES, + &actual_url, &actual_title)); // Some Mac OS versions return the URL in file://localhost form instead // of file:///, so we compare the url's path not its absolute string. EXPECT_EQ(net::FilePathToFileURL(current_directory).path(), diff --git a/chromium/ui/base/dragdrop/os_exchange_data_win_unittest.cc b/chromium/ui/base/dragdrop/os_exchange_data_win_unittest.cc index 750fd72ea75..1bc955e3806 100644 --- a/chromium/ui/base/dragdrop/os_exchange_data_win_unittest.cc +++ b/chromium/ui/base/dragdrop/os_exchange_data_win_unittest.cc @@ -100,10 +100,11 @@ TEST_F(OSExchangeDataWinTest, StringDataWritingViaCOM) { // Construct a new object with the old object so that we can use our access // APIs. OSExchangeData data2(data.provider().Clone()); - EXPECT_TRUE(data2.HasURL(CONVERT_FILENAMES)); + EXPECT_TRUE(data2.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); GURL url_from_data; std::wstring title; - EXPECT_TRUE(data2.GetURLAndTitle(CONVERT_FILENAMES, &url_from_data, &title)); + EXPECT_TRUE(data2.GetURLAndTitle(FilenameToURLPolicy::CONVERT_FILENAMES, + &url_from_data, &title)); GURL reference_url(input); EXPECT_EQ(reference_url.spec(), url_from_data.spec()); } @@ -147,10 +148,11 @@ TEST_F(OSExchangeDataWinTest, RemoveData) { // Construct a new object with the old object so that we can use our access // APIs. OSExchangeData data2(data.provider().Clone()); - EXPECT_TRUE(data2.HasURL(CONVERT_FILENAMES)); + EXPECT_TRUE(data2.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); GURL url_from_data; std::wstring title; - EXPECT_TRUE(data2.GetURLAndTitle(CONVERT_FILENAMES, &url_from_data, &title)); + EXPECT_TRUE(data2.GetURLAndTitle(FilenameToURLPolicy::CONVERT_FILENAMES, + &url_from_data, &title)); EXPECT_EQ(GURL(input2).spec(), url_from_data.spec()); } @@ -853,10 +855,11 @@ TEST_F(OSExchangeDataWinTest, ProvideURLForPlainTextURL) { data.SetString(L"http://google.com"); OSExchangeData data2(data.provider().Clone()); - ASSERT_TRUE(data2.HasURL(CONVERT_FILENAMES)); + ASSERT_TRUE(data2.HasURL(FilenameToURLPolicy::CONVERT_FILENAMES)); GURL read_url; std::wstring title; - EXPECT_TRUE(data2.GetURLAndTitle(CONVERT_FILENAMES, &read_url, &title)); + EXPECT_TRUE(data2.GetURLAndTitle(FilenameToURLPolicy::CONVERT_FILENAMES, + &read_url, &title)); EXPECT_EQ(GURL("http://google.com"), read_url); } |