blob: de6aae9f43733a804b1ab6cf42bba430b3fdef94 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_TEST_FAKE_ANDROID_INTENT_HELPER_H_
#define ASH_TEST_FAKE_ANDROID_INTENT_HELPER_H_
#include <map>
#include <optional>
#include <string>
#include "ash/public/cpp/android_intent_helper.h"
namespace ash {
// Fake instance of the |AndroidIntentHelper| used for test purposes.
// Will be installed as the singleton when constructed, and allows the injection
// of fake Android apps.
class FakeAndroidIntentHelper : public AndroidIntentHelper {
public:
using LocalizedAppName = std::string;
using Intent = std::string;
FakeAndroidIntentHelper();
~FakeAndroidIntentHelper() override;
FakeAndroidIntentHelper(FakeAndroidIntentHelper&) = delete;
FakeAndroidIntentHelper& operator=(FakeAndroidIntentHelper&) = delete;
// AndroidIntentHelper overrides:
void LaunchAndroidIntent(const std::string& intent) override;
std::optional<std::string> GetAndroidAppLaunchIntent(
const assistant::AndroidAppInfo& app_info) override;
// Adds a fake Android app.
// |intent| will be returned from GetAndroidAppLaunchIntent() if the value of
// |AndroidAppInfo::localized_app_name| matches |name|.
void AddApp(const LocalizedAppName& name, const Intent& intent);
// Returns the intent of the last Android app that was launched.
const std::optional<Intent>& last_launched_android_intent() const {
return last_launched_intent_;
}
private:
std::map<LocalizedAppName, Intent> apps_;
std::optional<Intent> last_launched_intent_;
};
} // namespace ash
#endif // ASH_TEST_FAKE_ANDROID_INTENT_HELPER_H_