| Index: ios/chrome/browser/ui/omnibox/location_bar_view_ios.h
|
| diff --git a/ios/chrome/browser/ui/omnibox/location_bar_view_ios.h b/ios/chrome/browser/ui/omnibox/location_bar_view_ios.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..61dc53b3602d33df818a19cdbc95b513208c3b9a
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/omnibox/location_bar_view_ios.h
|
| @@ -0,0 +1,117 @@
|
| +// Copyright (c) 2012 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_OMNIBOX_LOCATION_BAR_VIEW_IOS_H_
|
| +#define IOS_CHROME_BROWSER_UI_OMNIBOX_LOCATION_BAR_VIEW_IOS_H_
|
| +
|
| +#include <UIKit/UIKit.h>
|
| +
|
| +#include <memory>
|
| +
|
| +#include "base/mac/scoped_nsobject.h"
|
| +#include "base/strings/utf_string_conversions.h"
|
| +#include "components/omnibox/browser/omnibox_view.h"
|
| +#include "ios/chrome/browser/ui/omnibox/web_omnibox_edit_controller.h"
|
| +#include "ui/base/page_transition_types.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace ios {
|
| +class ChromeBrowserState;
|
| +}
|
| +
|
| +namespace web {
|
| +class WebState;
|
| +}
|
| +
|
| +class OmniboxViewIOS;
|
| +@class OmniboxClearButtonBridge;
|
| +@protocol OmniboxPopupPositioner;
|
| +@class OmniboxTextFieldIOS;
|
| +@protocol PreloadProvider;
|
| +class ToolbarModel;
|
| +
|
| +// Delegate for LocationBarViewIOS objects. Used to provide the location bar a
|
| +// way to open URLs and otherwise interact with the browser.
|
| +@protocol LocationBarDelegate
|
| +- (void)loadGURLFromLocationBar:(const GURL&)url
|
| + transition:(ui::PageTransition)transition;
|
| +- (void)locationBarHasBecomeFirstResponder;
|
| +- (void)locationBarHasResignedFirstResponder;
|
| +- (void)locationBarBeganEdit;
|
| +- (void)locationBarChanged;
|
| +- (web::WebState*)getWebState;
|
| +- (ToolbarModel*)toolbarModel;
|
| +@end
|
| +
|
| +// C++ object that wraps an OmniboxViewIOS and serves as its
|
| +// OmniboxEditController. LocationBarViewIOS bridges between the edit view
|
| +// and the rest of the browser and manages text field decorations (location
|
| +// icon, security icon, etc.).
|
| +class LocationBarViewIOS : public WebOmniboxEditController {
|
| + public:
|
| + LocationBarViewIOS(OmniboxTextFieldIOS* field,
|
| + ios::ChromeBrowserState* browser_state,
|
| + id<PreloadProvider> preloader,
|
| + id<OmniboxPopupPositioner> positioner,
|
| + id<LocationBarDelegate> delegate);
|
| + ~LocationBarViewIOS() override;
|
| +
|
| + // OmniboxEditController implementation
|
| + void OnAutocompleteAccept(const GURL& url,
|
| + WindowOpenDisposition disposition,
|
| + ui::PageTransition transition,
|
| + AutocompleteMatchType::Type type) override;
|
| + void OnChanged() override;
|
| + void OnInputInProgress(bool in_progress) override;
|
| + void OnSetFocus() override;
|
| + ToolbarModel* GetToolbarModel() override;
|
| + const ToolbarModel* GetToolbarModel() const override;
|
| +
|
| + // WebOmniboxEditController implementation.
|
| + web::WebState* GetWebState() override;
|
| + void OnKillFocus() override;
|
| +
|
| + // Called when toolbar state is updated.
|
| + void OnToolbarUpdated();
|
| +
|
| + // Resign omnibox first responder and end edit view editing.
|
| + void HideKeyboardAndEndEditing();
|
| +
|
| + // Tells the omnibox if it can show the hint text or not.
|
| + void SetShouldShowHintText(bool show_hint_text);
|
| +
|
| + // Returns a pointer to the text entry view.
|
| + const OmniboxView* GetLocationEntry() const;
|
| + OmniboxView* GetLocationEntry();
|
| +
|
| + // True if the omnibox text field is showing a placeholder image in its left
|
| + // view while it's collapsed (i.e. not in editing mode).
|
| + bool IsShowingPlaceholderWhileCollapsed();
|
| +
|
| + private:
|
| + // Installs a UIButton that serves as the location icon and lock icon. This
|
| + // button is installed as a left view of |field_|.
|
| + void InstallLocationIcon();
|
| +
|
| + // Creates and installs the voice search UIButton as a right view of |field_|.
|
| + // Does nothing on tablet.
|
| + void InstallVoiceSearchIcon();
|
| +
|
| + // Creates the clear text UIButton to be used as a right view of |field_|.
|
| + void CreateClearTextIcon(bool is_incognito);
|
| +
|
| + // Updates the view to show the appropriate button (e.g. clear text or voice
|
| + // search) on the right side of |field_|.
|
| + void UpdateRightDecorations();
|
| +
|
| + bool show_hint_text_;
|
| + base::scoped_nsobject<UIButton> clear_text_button_;
|
| + std::unique_ptr<OmniboxViewIOS> edit_view_;
|
| + base::scoped_nsobject<OmniboxClearButtonBridge> clear_button_bridge_;
|
| + OmniboxTextFieldIOS* field_;
|
| + id<LocationBarDelegate> delegate_;
|
| + bool is_showing_placeholder_while_collapsed_;
|
| +};
|
| +
|
| +#endif // IOS_CHROME_BROWSER_UI_OMNIBOX_LOCATION_BAR_VIEW_IOS_H_
|
|
|