|  | // Copyright 2022 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 COMPONENTS_COMMERCE_CORE_WEB_WRAPPER_H_ | 
|  | #define COMPONENTS_COMMERCE_CORE_WEB_WRAPPER_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/callback.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() = default; | 
|  | WebWrapper(const WebWrapper&) = delete; | 
|  | virtual ~WebWrapper() = default; | 
|  |  | 
|  | // Get the URL that is currently being displayed for the page. | 
|  | virtual const GURL& GetLastCommittedURL() = 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; | 
|  | }; | 
|  |  | 
|  | }  // namespace commerce | 
|  |  | 
|  | #endif  // COMPONENTS_COMMERCE_CORE_WEB_WRAPPER_H_ |