| // Copyright 2017 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_GENERIC_H_ |
| #define COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_GENERIC_H_ |
| |
| #include "base/memory/weak_ptr.h" |
| #include "base/time/time.h" |
| #include "components/open_from_clipboard/clipboard_recent_content.h" |
| #include "ui/base/clipboard/clipboard_url_info.h" |
| #include "url/gurl.h" |
| |
| // An implementation of ClipboardRecentContent that uses |
| // ui/base/clipboard/clipboard.h |
| // and hence works on all platforms for which Clipboard is implemented. |
| // (This includes all platforms Chrome runs on except iOS.) |
| // Note that on some platforms Clipboard may not implement the necessary |
| // functions for this provider to function. In those cases, it will not do |
| // anything. |
| class ClipboardRecentContentGeneric : public ClipboardRecentContent { |
| public: |
| ClipboardRecentContentGeneric(); |
| |
| ClipboardRecentContentGeneric(const ClipboardRecentContentGeneric&) = delete; |
| ClipboardRecentContentGeneric& operator=( |
| const ClipboardRecentContentGeneric&) = delete; |
| |
| ~ClipboardRecentContentGeneric() override; |
| |
| // Return if system's clipboard contains an image that will not trigger a |
| // system notification that the clipboard has been accessed. |
| void HasRecentImageFromClipboard(base::OnceCallback<void(bool)> callback); |
| |
| // ClipboardRecentContent implementation. |
| void GetRecentImageFromClipboard(GetRecentImageCallback callback) override; |
| void HasRecentContentFromClipboard(std::set<ClipboardContentType> types, |
| HasDataCallback callback) override; |
| void GetRecentURLFromClipboard(GetRecentURLCallback callback) override; |
| void GetRecentTextFromClipboard(GetRecentTextCallback callback) override; |
| base::TimeDelta GetClipboardContentAge() const override; |
| void SuppressClipboardContent() override; |
| void ClearClipboardContent() override; |
| |
| private: |
| // Returns true if the URL is appropriate to be suggested. |
| static bool IsAppropriateSuggestion(const GURL& url); |
| |
| void OnReadURLAsAsciiText(GetRecentURLCallback callback, |
| std::string gurl_string); |
| void OnReadText(GetRecentURLCallback callback, std::u16string gurl_string16); |
| void OnReadURL(GetRecentURLCallback callback, ui::ClipboardUrlInfo url_info); |
| |
| base::WeakPtrFactory<ClipboardRecentContentGeneric> weak_factory_{this}; |
| }; |
| |
| #endif // COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_GENERIC_H_ |