Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(591)

Unified Diff: ios/chrome/browser/ui/contextual_search/contextual_search_controller.h

Issue 2588713002: Upstream Chrome on iOS source code [4/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/contextual_search/contextual_search_controller.h
diff --git a/ios/chrome/browser/ui/contextual_search/contextual_search_controller.h b/ios/chrome/browser/ui/contextual_search/contextual_search_controller.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b30b3cee0ffc5b596c93263b14b2a7836f76b1c
--- /dev/null
+++ b/ios/chrome/browser/ui/contextual_search/contextual_search_controller.h
@@ -0,0 +1,125 @@
+// Copyright 2015 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_CONTEXTUAL_SEARCH_CONTROLLER_H_
+#define IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_CONTEXTUAL_SEARCH_CONTROLLER_H_
+
+#import <UIKit/UIKit.h>
+
+#include "base/ios/block_types.h"
+#include "base/strings/string16.h"
+#include "ios/chrome/browser/ui/contextual_search/panel_configuration.h"
+
+namespace ios {
+class ChromeBrowserState;
+}
+
+namespace web {
+class WebState;
+}
+
+class GURL;
+@class Tab;
+@class TouchToSearchPermissionsMediator;
+
+namespace ContextualSearch {
+// Possible reason for panel state changes.
+enum StateChangeReason {
+ UNKNOWN,
+ RESET,
+ BACK_PRESS, // This is Android-only; we should never use this value.
+ TEXT_SELECT_TAP,
+ TEXT_SELECT_LONG_PRESS,
+ INVALID_SELECTION,
+ BASE_PAGE_TAP,
+ BASE_PAGE_SCROLL,
+ SEARCH_BAR_TAP,
+ SERP_NAVIGATION,
+ TAB_PROMOTION,
+ CLICK,
+ SWIPE, // Moved by going to the nearest state when a drag ends.
+ FLING, // Moved by interpolating a drag with velocity.
+ OPTIN,
+ OPTOUT
+};
+} // namespace ContextualSearch
+
+@class ContextualSearchController;
+@class ContextualSearchPanelView;
+@class ContextualSearchResultsView;
+
+@protocol ContextualSearchTabProvider<NSObject>
+// Disassociate the internal Tab object from this view and return it.
+- (Tab*)releaseTab;
+@end
+
+@protocol ContextualSearchControllerDelegate<NSObject>
+
+// Called by the controller when it has tab content for the delegate to load
+// and display as a new tab; the content is provided by -releaseSearchTab.
+// |focusInput| indicates that the after promoting the tab, the delegate must
+// focus the main input.
+- (void)promotePanelToTabProvidedBy:(id<ContextualSearchTabProvider>)tabProvider
+ focusInput:(BOOL)focusInput;
+
+// Called by the controller when it has a link for the delegate to load
+// and display as a new tab.
+- (void)createTabFromContextualSearchController:(const GURL&)url;
+
+// Provides the current height of the headers at the top of the screen.
+- (CGFloat)currentHeaderHeight;
+
+@end
+
+// Controller for handling contextual search gestures.
+@interface ContextualSearchController : NSObject
+
+// YES if contextual search is enabled on the current WebState.
+@property(readonly) BOOL enabled;
+
+// The current web state being watched for contextual search events.
+// Only tests should set this directly; for general use, use -setTab:, which
+// will set this property with the tab's webState.
+@property(nonatomic, assign) web::WebState* webState;
+
+// The panel view that this controller should populate with subviews and use.
+// Owned by its superview. Setting this will have the controller create subviews
+// for the panel; code that sets this property is responsible for disposing of
+// the old panel and its views.
+// This property can only be assigned a non-nil value, and can only be assigned
+// a value when its current value is nil.
+@property(nonatomic, assign) ContextualSearchPanelView* panel;
+
+// Designated initializer.
+- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState
+ delegate:(id<ContextualSearchControllerDelegate>)
+ delegate;
+
+// Set the Tab to be used as the opener for the search results tab. |opener|'s
+// lifetime should be greater than the reciever's. |opener| can be nil.
+- (void)setTab:(Tab*)tab;
+
+// Enable or disable contextual search for the current WebState. If
+// |enabled| is YES, contextual search may still not be enabled for a number of
+// reasons; the -enabled property will indicate the current status.
+// This method functions asynchronously.
+- (void)enableContextualSearch:(BOOL)enabled;
+
+// Reset the pane to be offscreen when tabs change.
+- (void)movePanelOffscreen;
+
+// Destroy the receiver.
+// Any following call is not supported.
+- (void)close;
+
+@end
+
+// Testing category that allows a permissions class to be injected.
+@interface ContextualSearchController (Testing)
+
+- (void)setPermissions:(TouchToSearchPermissionsMediator*)permissions;
+
+@end
+
+#endif // IOS_CHROME_BROWSER_UI_CONTEXTUAL_SEARCH_CONTEXTUAL_SEARCH_CONTROLLER_H_

Powered by Google App Engine
This is Rietveld 408576698