| Index: ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.h
|
| diff --git a/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.h b/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..068f1cebd586730749e8b2fdc9d3783229b10118
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.h
|
| @@ -0,0 +1,80 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_TOUCH_TO_SEARCH_PERMISSIONS_MEDIATOR_H_
|
| +#define IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_TOUCH_TO_SEARCH_PERMISSIONS_MEDIATOR_H_
|
| +
|
| +#import <Foundation/Foundation.h>
|
| +
|
| +#import "url/gurl.h"
|
| +
|
| +namespace ios {
|
| +class ChromeBrowserState;
|
| +}
|
| +
|
| +namespace TouchToSearch {
|
| +
|
| +// Enum describing the possible state that a user's Touch-to-Search preference
|
| +// is in:
|
| +typedef NS_ENUM(NSInteger, TouchToSearchPreferenceState) {
|
| + UNDECIDED = -1, // User has not set a preference.
|
| + DISABLED, // User has disabled TTS.
|
| + ENABLED // User has "opted in" and enabled TTS.
|
| +};
|
| +
|
| +} // namespace TouchToSearch
|
| +
|
| +@protocol TouchToSearchPermissionsChangeAudience<NSObject>
|
| +@optional
|
| +
|
| +// Called synchronously when preferences are changed
|
| +- (void)touchToSearchDidChangePreferenceState:
|
| + (TouchToSearch::TouchToSearchPreferenceState)preferenceState;
|
| +
|
| +// Called (asynchronously) after some state has changed that might have affected
|
| +// touch-to-search permissions.
|
| +- (void)touchToSearchPermissionsUpdated;
|
| +
|
| +@end
|
| +
|
| +// An object for managing and vending permissions associated with the
|
| +// Touch-to-Search feature.
|
| +@interface TouchToSearchPermissionsMediator : NSObject
|
| +
|
| +// YES if the device supports Touch-to-Search (based on command line flags and
|
| +// Finch experiments). The return value will be the same over the lifetime of
|
| +// a Chrome process.
|
| ++ (BOOL)isTouchToSearchAvailableOnDevice;
|
| +
|
| +// Designated initializer.
|
| +- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState
|
| + NS_DESIGNATED_INITIALIZER;
|
| +
|
| +- (instancetype)init NS_UNAVAILABLE;
|
| +
|
| +// Current preference state. Assigning to this property will update the internal
|
| +// representation backing this state.
|
| +@property(nonatomic, assign)
|
| + TouchToSearch::TouchToSearchPreferenceState preferenceState;
|
| +
|
| +// Current audience object.
|
| +@property(nonatomic, assign)
|
| + NSObject<TouchToSearchPermissionsChangeAudience>* audience;
|
| +
|
| +// YES if, given the current permissions state, touch-to-search can be enabled.
|
| +- (BOOL)canEnable;
|
| +
|
| +// YES if, given the current permissions state, surrounding text in |URL| may be
|
| +// extracted.
|
| +- (BOOL)canExtractTapContextForURL:(const GURL&)url;
|
| +
|
| +// YES if it is permitted to send page URLs to the contextual search service.
|
| +- (BOOL)canSendPageURLs;
|
| +
|
| +// YES if search results pages can be preloaded.
|
| +- (BOOL)canPreloadSearchResults;
|
| +
|
| +@end
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_TOUCH_TO_SEARCH_PERMISSIONS_MEDIATOR_H_
|
|
|