blob: 644d95229e790d4494301e2fdf8b093248115ed5 [file] [log] [blame]
// 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 CHROME_BROWSER_WALLET_ANDROID_BOARDING_PASS_DETECTOR_H_
#define CHROME_BROWSER_WALLET_ANDROID_BOARDING_PASS_DETECTOR_H_
#include <string>
#include "chrome/common/wallet/boarding_pass_extractor.mojom.h"
#include "content/public/browser/web_contents.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace wallet {
// Detects boarding passes on a web page. This class is self-owned and will
// delete itself after the detection is complete or if the renderer process
// crashes.
class BoardingPassDetector {
public:
BoardingPassDetector();
~BoardingPassDetector();
// Initiates the boarding pass detection on the given `web_contents`.
// `callback` is invoked with a vector of detected boarding pass strings.
void DetectBoardingPass(
content::WebContents* web_contents,
base::OnceCallback<void(const std::vector<std::string>&)> callback);
// Performs the boarding pass detection using the provided `remote`.
void DetectBoardingPassWithRemote(
mojo::Remote<mojom::BoardingPassExtractor> remote,
base::OnceCallback<void(const std::vector<std::string>&)> callback);
// Returns true if the boarding pass detection should be run on the given
// `url`.
static bool ShouldDetect(const std::string& url);
private:
// Invoked when the boarding pass extraction is complete.
void ExtractBoardingPassComplete(
const std::vector<std::string>& boarding_passes);
// Sends the detection result to the callback and deletes this object.
void SendResultAndDeleteSelf();
// The remote for the boarding pass extractor service.
mojo::Remote<mojom::BoardingPassExtractor> remote_;
// The callback to be invoked with the detection results.
base::OnceCallback<void(const std::vector<std::string>&)> callback_;
// The result of the boarding pass extraction.
std::vector<std::string> extraction_result_;
};
} // namespace wallet
#endif // CHROME_BROWSER_WALLET_ANDROID_BOARDING_PASS_DETECTOR_H_