| // 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 COMPONENTS_COMMERCE_CORE_WEB_WRAPPER_H_ |
| #define COMPONENTS_COMMERCE_CORE_WEB_WRAPPER_H_ |
| |
| #include <string> |
| |
| #include "base/functional/callback.h" |
| #include "base/memory/weak_ptr.h" |
| #include "services/metrics/public/cpp/ukm_source_id.h" |
| #include "url/gurl.h" |
| |
| namespace base { |
| class Value; |
| } // namespace base |
| |
| namespace commerce { |
| |
| // A wrapper class for WebContent on desktop and android or WebState on iOS. |
| class WebWrapper { |
| public: |
| WebWrapper(); |
| WebWrapper(const WebWrapper&) = delete; |
| virtual ~WebWrapper(); |
| |
| // Get the URL that is currently being displayed for the page. |
| virtual const GURL& GetLastCommittedURL() const = 0; |
| |
| // Gets the title for the current page. |
| virtual const std::u16string& GetTitle() = 0; |
| |
| // Whether the first load after a navigation has completed. This is useful |
| // for determining if it is safe to run javascript and whether a navigation |
| // was inside of a single-page webapp. |
| virtual bool IsFirstLoadForNavigationFinished() = 0; |
| |
| // Whether content is off the record or in incognito mode. |
| virtual bool IsOffTheRecord() = 0; |
| |
| // Execute the provided |script| and pass the result through |callback|. This |
| // will run in an isolated world if possible. |
| virtual void RunJavascript( |
| const std::u16string& script, |
| base::OnceCallback<void(const base::Value)> callback) = 0; |
| |
| // Get the source ID for the current page. |
| virtual ukm::SourceId GetPageUkmSourceId() = 0; |
| |
| // Gets a weak pointer for use in callbacks. |
| base::WeakPtr<WebWrapper> GetWeakPtr(); |
| |
| private: |
| base::WeakPtrFactory<WebWrapper> weak_ptr_factory_{this}; |
| }; |
| |
| } // namespace commerce |
| |
| #endif // COMPONENTS_COMMERCE_CORE_WEB_WRAPPER_H_ |