| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_LENS_MODEL_LENS_BROWSER_AGENT_H_ |
| #define IOS_CHROME_BROWSER_LENS_MODEL_LENS_BROWSER_AGENT_H_ |
| |
| #import <optional> |
| |
| #import "base/memory/raw_ptr.h" |
| #import "base/scoped_multi_source_observation.h" |
| #import "ios/chrome/browser/shared/model/browser/browser_user_data.h" |
| |
| enum class LensEntrypoint; |
| class Browser; |
| |
| // A browser agent to help with Lens navigation. |
| class LensBrowserAgent : public BrowserUserData<LensBrowserAgent> { |
| public: |
| LensBrowserAgent(const LensBrowserAgent&) = delete; |
| LensBrowserAgent& operator=(const LensBrowserAgent&) = delete; |
| |
| ~LensBrowserAgent() override; |
| |
| // Returns true if the active browser WebState's visible URL is |
| // a supported Lens camera results URL. In this case, back navigation |
| // should open the Lens camera experience if the user is at the |
| // bottom of the navigation stack. |
| bool CanGoBackToLensViewFinder() const; |
| |
| // Returns the user to the Lens camera experience if the active |
| // browser WebState's visible URL is a supported Lens camera results URL. |
| void GoBackToLensViewFinder() const; |
| |
| private: |
| friend class BrowserUserData<LensBrowserAgent>; |
| |
| explicit LensBrowserAgent(Browser* browser); |
| |
| // Returns the Lens entrypoint for the current WebState URL if it is a |
| // Lens Web results URL from an enabled camera entrypoint. |
| std::optional<LensEntrypoint> CurrentResultsEntrypoint() const; |
| }; |
| |
| #endif // IOS_CHROME_BROWSER_LENS_MODEL_LENS_BROWSER_AGENT_H_ |