1// Copyright (c) 2011 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. 4 5#ifndef CHROME_BROWSER_UI_COCOA_FIND_PASTEBOARD_H_ 6#define CHROME_BROWSER_UI_COCOA_FIND_PASTEBOARD_H_ 7#pragma once 8 9#include "base/string16.h" 10 11#ifdef __OBJC__ 12 13#import <Cocoa/Cocoa.h> 14 15#include "base/memory/scoped_nsobject.h" 16 17extern NSString* kFindPasteboardChangedNotification; 18 19// Manages the find pasteboard. Use this to copy text to the find pasteboard, 20// to get the text currently on the find pasteboard, and to receive 21// notifications when the text on the find pasteboard has changed. You should 22// always use this class instead of accessing 23// [NSPasteboard pasteboardWithName:NSFindPboard] directly. 24// 25// This is not thread-safe and must be used on the main thread. 26// 27// This is supposed to be a singleton. 28@interface FindPasteboard : NSObject { 29 @private 30 scoped_nsobject<NSString> findText_; 31} 32 33// Returns the singleton instance of this class. 34+ (FindPasteboard*)sharedInstance; 35 36// Returns the current find text. This is never nil; if there is no text on the 37// find pasteboard, this returns an empty string. 38- (NSString*)findText; 39 40// Sets the current find text to |newText| and sends a 41// |kFindPasteboardChangedNotification| to the default notification center if 42// it the new text different from the current text. |newText| must not be nil. 43- (void)setFindText:(NSString*)newText; 44@end 45 46@interface FindPasteboard (TestingAPI) 47- (void)loadTextFromPasteboard:(NSNotification*)notification; 48 49// This methods is meant to be overridden in tests. 50- (NSPasteboard*)findPboard; 51@end 52 53#endif // __OBJC__ 54 55// Also provide a c++ interface 56string16 GetFindPboardText(); 57 58#endif // CHROME_BROWSER_UI_COCOA_FIND_PASTEBOARD_H_ 59