Commit e360cab8 authored by Robbie Gibson's avatar Robbie Gibson Committed by Commit Bot

Revert "Add async methods to ClipboardRecentContent for URLs"

This reverts commit 42e67c12.

Reason for revert: Changed API to use one method to get all content types.

Original change's description:
> Add async methods to ClipboardRecentContent for URLs
> 
> Bug: 1098722
> Change-Id: Icd9da0e758c288a44716fb6f5a505267a76f42b1
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2302756
> Commit-Queue: Robbie Gibson <rkgibson@google.com>
> Reviewed-by: Olivier Robin <olivierrobin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#789987}

TBR=olivierrobin@chromium.org,rkgibson@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 1098722
Change-Id: I12f08509596dbf534072296dd03b977a57f9ee48
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2323682Reviewed-by: default avatarRobbie Gibson <rkgibson@google.com>
Commit-Queue: Robbie Gibson <rkgibson@google.com>
Cr-Commit-Position: refs/heads/master@{#792307}
parent 4ff300a5
......@@ -48,20 +48,6 @@ class ClipboardRecentContent {
// Return if system's clipboard contains an image.
virtual bool HasRecentImageFromClipboard() = 0;
/*
On iOS, iOS 14 introduces new clipboard APIs that are async. The asynchronous
forms of clipboard access below should be preferred.
*/
using HasDataCallback = base::OnceCallback<void(bool)>;
using GetRecentURLCallback = base::OnceCallback<void(base::Optional<GURL>)>;
// Returns whether the clipboard contains a URL to |HasDataCallback| if it
// is recent enough and has not been suppressed.
virtual void HasRecentURLFromClipboard(HasDataCallback callback) = 0;
// Returns clipboard content as URL to |GetRecentURLCallback|, if it has a
// compatible type, is recent enough and has not been suppressed.
virtual void GetRecentURLFromClipboard(GetRecentURLCallback callback) = 0;
// Returns how old the content of the clipboard is.
virtual base::TimeDelta GetClipboardContentAge() const = 0;
......
......@@ -118,16 +118,6 @@ bool ClipboardRecentContentGeneric::HasRecentImageFromClipboard() {
/* data_dst = */ nullptr);
}
void ClipboardRecentContentGeneric::HasRecentURLFromClipboard(
HasDataCallback callback) {
std::move(callback).Run(GetRecentURLFromClipboard().has_value());
}
void ClipboardRecentContentGeneric::GetRecentURLFromClipboard(
GetRecentURLCallback callback) {
std::move(callback).Run(GetRecentURLFromClipboard());
}
base::TimeDelta ClipboardRecentContentGeneric::GetClipboardContentAge() const {
const base::Time last_modified_time =
ui::Clipboard::GetForCurrentThread()->GetLastModifiedTime();
......
......@@ -28,8 +28,6 @@ class ClipboardRecentContentGeneric : public ClipboardRecentContent {
base::Optional<base::string16> GetRecentTextFromClipboard() override;
void GetRecentImageFromClipboard(GetRecentImageCallback callback) override;
bool HasRecentImageFromClipboard() override;
void HasRecentURLFromClipboard(HasDataCallback callback) override;
void GetRecentURLFromClipboard(GetRecentURLCallback callback) override;
base::TimeDelta GetClipboardContentAge() const override;
void SuppressClipboardContent() override;
void ClearClipboardContent() override;
......
......@@ -44,15 +44,6 @@
// not been suppressed. Otherwise, returns nil.
- (UIImage*)recentImageFromClipboard;
// Uses the new iOS 14 pasteboard detection pattern API to asynchronously detect
// if the clipboard contains a URL (that has not been suppressed) without
// actually getting the contents.
- (void)hasRecentURLFromClipboard:(void (^)(BOOL))callback;
// Uses the new iOS 14 pasteboard detection pattern API to asynchronously get a
// copied URL from the clipboard if it has not been suppressed. Passes nil to
// the callback otherwise.
- (void)recentURLFromClipboardAsync:(void (^)(NSURL*))callback;
// Returns how old the content of the clipboard is.
- (NSTimeInterval)clipboardContentAge;
......
......@@ -158,81 +158,6 @@ NSString* const kPasteboardChangeDateKey = @"PasteboardChangeDate";
return self.cachedImage;
}
- (void)hasRecentURLFromClipboard:(void (^)(BOOL))callback {
DCHECK(callback);
if (@available(iOS 14, *)) {
[self updateIfNeeded];
if (![self shouldReturnValueOfClipboard]) {
callback(NO);
return;
}
// Use cached value if it exists
if (self.cachedURL) {
callback(YES);
return;
}
#if defined(__IPHONE_14_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_14_0
NSSet<UIPasteboardDetectionPattern>* urlPattern =
[NSSet setWithObject:UIPasteboardDetectionPatternProbableWebURL];
[UIPasteboard.generalPasteboard
detectPatternsForPatterns:urlPattern
completionHandler:^(
NSSet<UIPasteboardDetectionPattern>* patterns,
NSError* error) {
callback([patterns
containsObject:
UIPasteboardDetectionPatternProbableWebURL]);
}];
#else
// To prevent clipboard notification from appearing on iOS 14 with iOS 13
// SDK, use the -hasURLs property to check for URL existence. This will
// cause crbug.com/1033935 to reappear in code using this method (also see
// the comments in -URLFromPasteboard in this file), but that is preferable
// to the notificatio appearing when it shouldn't.
callback(UIPasteboard.generalPasteboard.hasURLs);
#endif
} else {
callback([self recentURLFromClipboard] != nil);
}
}
- (void)recentURLFromClipboardAsync:(void (^)(NSURL*))callback {
DCHECK(callback);
if (@available(iOS 14, *)) {
[self updateIfNeeded];
if (![self shouldReturnValueOfClipboard]) {
callback(nil);
return;
}
// Use cached value if it exists.
if (self.cachedURL) {
callback(self.cachedURL);
return;
}
#if defined(__IPHONE_14_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_14_0
NSSet<UIPasteboardDetectionPattern>* urlPattern =
[NSSet setWithObject:UIPasteboardDetectionPatternProbableWebURL];
[UIPasteboard.generalPasteboard
detectValuesForPatterns:urlPattern
completionHandler:^(
NSDictionary<UIPasteboardDetectionPattern, id>* values,
NSError* error) {
self.cachedURL =
values[UIPasteboardDetectionPatternProbableWebURL];
callback(self.cachedURL);
}];
#else
callback([self recentURLFromClipboard]);
#endif
} else {
callback([self recentURLFromClipboard]);
}
}
- (NSTimeInterval)clipboardContentAge {
return -[self.lastPasteboardChangeDate timeIntervalSinceNow];
}
......
......@@ -44,8 +44,6 @@ class ClipboardRecentContentIOS : public ClipboardRecentContent {
base::Optional<base::string16> GetRecentTextFromClipboard() override;
void GetRecentImageFromClipboard(GetRecentImageCallback callback) override;
bool HasRecentImageFromClipboard() override;
void HasRecentURLFromClipboard(HasDataCallback callback) override;
void GetRecentURLFromClipboard(GetRecentURLCallback callback) override;
base::TimeDelta GetClipboardContentAge() const override;
void SuppressClipboardContent() override;
void ClearClipboardContent() override;
......
......@@ -102,27 +102,6 @@ bool ClipboardRecentContentIOS::HasRecentImageFromClipboard() {
return GetRecentImageFromClipboardInternal().has_value();
}
void ClipboardRecentContentIOS::HasRecentURLFromClipboard(
HasDataCallback callback) {
__block HasDataCallback callback_for_block = std::move(callback);
[implementation_ hasRecentURLFromClipboard:^(BOOL exists) {
std::move(callback_for_block).Run(exists);
}];
}
void ClipboardRecentContentIOS::GetRecentURLFromClipboard(
GetRecentURLCallback callback) {
__block GetRecentURLCallback callback_for_block = std::move(callback);
[implementation_ recentURLFromClipboardAsync:^(NSURL* url) {
GURL converted_url = net::GURLWithNSURL(url);
if (!converted_url.is_valid()) {
std::move(callback_for_block).Run(base::nullopt);
return;
}
std::move(callback_for_block).Run(converted_url);
}];
}
ClipboardRecentContentIOS::~ClipboardRecentContentIOS() {}
base::TimeDelta ClipboardRecentContentIOS::GetClipboardContentAge() const {
......
......@@ -40,16 +40,6 @@ bool FakeClipboardRecentContent::HasRecentImageFromClipboard() {
return clipboard_image_content_.has_value();
}
void FakeClipboardRecentContent::HasRecentURLFromClipboard(
HasDataCallback callback) {
std::move(callback).Run(GetRecentURLFromClipboard().has_value());
}
void FakeClipboardRecentContent::GetRecentURLFromClipboard(
GetRecentURLCallback callback) {
std::move(callback).Run(GetRecentURLFromClipboard());
}
base::TimeDelta FakeClipboardRecentContent::GetClipboardContentAge() const {
return content_age_;
}
......
......@@ -23,8 +23,6 @@ class FakeClipboardRecentContent : public ClipboardRecentContent {
base::Optional<base::string16> GetRecentTextFromClipboard() override;
void GetRecentImageFromClipboard(GetRecentImageCallback callback) override;
bool HasRecentImageFromClipboard() override;
void HasRecentURLFromClipboard(HasDataCallback callback) override;
void GetRecentURLFromClipboard(GetRecentURLCallback callback) override;
base::TimeDelta GetClipboardContentAge() const override;
void SuppressClipboardContent() override;
void ClearClipboardContent() override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment