// Copyright 2023 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_IOS_BROWSER_WEB_EXTRACTOR_IMPL_H_
#define COMPONENTS_COMMERCE_IOS_BROWSER_WEB_EXTRACTOR_IMPL_H_
#include "components/commerce/core/web_extractor.h"
#include "components/commerce/core/web_wrapper.h"
#include "services/data_decoder/public/cpp/data_decoder.h"
namespace commerce {
class WebExtractorImpl : public WebExtractor {
public:
WebExtractorImpl();
WebExtractorImpl(const WebExtractorImpl&) = delete;
WebExtractorImpl operator=(const WebExtractorImpl&) = delete;
~WebExtractorImpl() override;
// commerce::WebExtractor implementation.
void ExtractMetaInfo(
WebWrapper* web_wrapper,
base::OnceCallback<void(const base::Value)> callback) override;
private:
void OnExtractionMetaInfo(
base::OnceCallback<void(const base::Value)> callback,
const base::Value result);
void OnProductInfoJsonSanitizationCompleted(
base::OnceCallback<void(const base::Value)> callback,
data_decoder::DataDecoder::ValueOrError result);
base::WeakPtrFactory<WebExtractorImpl> weak_ptr_factory_{this};
};
} // namespace commerce
#endif // COMPONENTS_COMMERCE_IOS_BROWSER_WEB_EXTRACTOR_IMPL_H_