| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/open_from_clipboard/clipboard_recent_content_ios.h" | 5 #include "components/open_from_clipboard/clipboard_recent_content_ios.h" |
| 6 | 6 |
| 7 #import <UIKit/UIKit.h> | 7 #import <UIKit/UIKit.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 return false; | 93 return false; |
| 94 } | 94 } |
| 95 if (urlFromPasteboardCache_.is_valid()) { | 95 if (urlFromPasteboardCache_.is_valid()) { |
| 96 *url = urlFromPasteboardCache_; | 96 *url = urlFromPasteboardCache_; |
| 97 return true; | 97 return true; |
| 98 } | 98 } |
| 99 return false; | 99 return false; |
| 100 } | 100 } |
| 101 | 101 |
| 102 void ClipboardRecentContentIOS::PasteboardChanged() { | 102 void ClipboardRecentContentIOS::PasteboardChanged() { |
| 103 if ([UIPasteboard generalPasteboard].changeCount != | 103 urlFromPasteboardCache_ = URLFromPasteboard(); |
| 104 lastPasteboardChangeCount_) { | 104 if (!urlFromPasteboardCache_.is_empty()) { |
| 105 urlFromPasteboardCache_ = URLFromPasteboard(); | 105 base::RecordAction( |
| 106 if (!urlFromPasteboardCache_.is_empty()) { | 106 base::UserMetricsAction("MobileOmniboxClipboardChanged")); |
| 107 base::RecordAction( | |
| 108 base::UserMetricsAction("MobileOmniboxClipboardChanged")); | |
| 109 } | |
| 110 lastPasteboardChangeDate_.reset([[NSDate date] retain]); | |
| 111 lastPasteboardChangeCount_ = [UIPasteboard generalPasteboard].changeCount; | |
| 112 SaveToUserDefaults(); | |
| 113 } | 107 } |
| 108 lastPasteboardChangeDate_.reset([[NSDate date] retain]); |
| 109 lastPasteboardChangeCount_ = [UIPasteboard generalPasteboard].changeCount; |
| 110 SaveToUserDefaults(); |
| 114 } | 111 } |
| 115 | 112 |
| 116 ClipboardRecentContentIOS::ClipboardRecentContentIOS() | 113 ClipboardRecentContentIOS::ClipboardRecentContentIOS() |
| 117 : ClipboardRecentContent() { | 114 : ClipboardRecentContent() { |
| 118 urlFromPasteboardCache_ = URLFromPasteboard(); | 115 urlFromPasteboardCache_ = URLFromPasteboard(); |
| 119 LoadFromUserDefaults(); | 116 LoadFromUserDefaults(); |
| 120 // The pasteboard's changeCount is reset to zero when the device is restarted. | 117 // The pasteboard's changeCount is reset to zero when the device is restarted. |
| 121 // This means that even if |changeCount| hasn't changed, the pasteboard | 118 // This means that even if |changeCount| hasn't changed, the pasteboard |
| 122 // content could have changed. In order to avoid missing pasteboard changes, | 119 // content could have changed. In order to avoid missing pasteboard changes, |
| 123 // the changeCount is reset if the device has restarted. | 120 // the changeCount is reset if the device has restarted. |
| 124 NSInteger changeCount = [UIPasteboard generalPasteboard].changeCount; | 121 NSInteger changeCount = [UIPasteboard generalPasteboard].changeCount; |
| 125 if (changeCount != lastPasteboardChangeCount_ || | 122 if (changeCount != lastPasteboardChangeCount_ || |
| 126 DeviceRestartedSincePasteboardChanged()) { | 123 DeviceRestartedSincePasteboardChanged()) { |
| 127 PasteboardChanged(); | 124 PasteboardChanged(); |
| 128 } | 125 } |
| 129 notificationBridge_.reset( | 126 notificationBridge_.reset( |
| 130 [[PasteboardNotificationListenerBridge alloc] initWithDelegate:this]); | 127 [[PasteboardNotificationListenerBridge alloc] initWithDelegate:this]); |
| 131 } | 128 } |
| 132 | 129 |
| 133 ClipboardRecentContentIOS::~ClipboardRecentContentIOS() { | 130 ClipboardRecentContentIOS::~ClipboardRecentContentIOS() { |
| 134 } | 131 } |
| 135 | 132 |
| 136 GURL ClipboardRecentContentIOS::URLFromPasteboard() { | 133 GURL ClipboardRecentContentIOS::URLFromPasteboard() { |
| 137 const std::string clipboard = | 134 const std::string clipboard = |
| (...skipping 28 matching lines...) Expand all Loading... |
| 166 [[NSUserDefaults standardUserDefaults] setObject:lastPasteboardChangeDate_ | 163 [[NSUserDefaults standardUserDefaults] setObject:lastPasteboardChangeDate_ |
| 167 forKey:kPasteboardChangeDateKey]; | 164 forKey:kPasteboardChangeDateKey]; |
| 168 } | 165 } |
| 169 | 166 |
| 170 bool ClipboardRecentContentIOS::DeviceRestartedSincePasteboardChanged() { | 167 bool ClipboardRecentContentIOS::DeviceRestartedSincePasteboardChanged() { |
| 171 int64 secondsSincePasteboardChange = | 168 int64 secondsSincePasteboardChange = |
| 172 -static_cast<int64>([lastPasteboardChangeDate_ timeIntervalSinceNow]); | 169 -static_cast<int64>([lastPasteboardChangeDate_ timeIntervalSinceNow]); |
| 173 int64 secondsSinceLastDeviceRestart = base::SysInfo::Uptime() / 1000; | 170 int64 secondsSinceLastDeviceRestart = base::SysInfo::Uptime() / 1000; |
| 174 return secondsSincePasteboardChange > secondsSinceLastDeviceRestart; | 171 return secondsSincePasteboardChange > secondsSinceLastDeviceRestart; |
| 175 } | 172 } |
| OLD | NEW |