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
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_IOS_H_
6 #define COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_IOS_H_
8 #include "base/mac/scoped_nsobject.h"
9 #include "components/open_from_clipboard/clipboard_recent_content.h"
13 @
class PasteboardNotificationListenerBridge
;
16 struct DefaultSingletonTraits
;
18 // IOS implementation of ClipboardRecentContent
19 class ClipboardRecentContentIOS
: public ClipboardRecentContent
{
21 static ClipboardRecentContentIOS
* GetInstance();
22 // Notifies that the content of the pasteboard may have changed.
23 void PasteboardChanged();
25 // ClipboardRecentContent implementation.
26 bool GetRecentURLFromClipboard(GURL
* url
) const override
;
29 friend struct DefaultSingletonTraits
<ClipboardRecentContentIOS
>;
31 ClipboardRecentContentIOS();
32 ~ClipboardRecentContentIOS() override
;
33 // Loads information from the user defaults about the latest pasteboard entry.
34 void LoadFromUserDefaults();
35 // Saves information to the user defaults about the latest pasteboard entry.
36 void SaveToUserDefaults();
37 // Returns the URL contained in the clipboard (if any).
38 GURL
URLFromPasteboard();
39 // Returns whether the device has restarted since the last time a pasteboard
40 // change was detected.
41 bool DeviceRestartedSincePasteboardChanged();
43 // The pasteboard's change count. Increases everytime the pasteboard changes.
44 NSInteger lastPasteboardChangeCount_
;
45 // Estimation of the date when the pasteboard changed.
46 base::scoped_nsobject
<NSDate
> lastPasteboardChangeDate_
;
47 // Cache of the GURL contained in the pasteboard (if any).
48 GURL urlFromPasteboardCache_
;
49 // Bridge to receive notification when the pasteboard changes.
50 base::scoped_nsobject
<PasteboardNotificationListenerBridge
>
53 DISALLOW_COPY_AND_ASSIGN(ClipboardRecentContentIOS
);
56 #endif // COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_IOS_H_