blob: dd5c573bdd1f1fa1c3c203185407c1c4b22ac8e0 [file]
// Copyright 2026 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_OPTIMIZATION_GUIDE_MOCK_REMOTE_MODEL_EXECUTOR_H_
#define CHROME_BROWSER_OPTIMIZATION_GUIDE_MOCK_REMOTE_MODEL_EXECUTOR_H_
#include "base/observer_list.h"
#include "components/optimization_guide/core/model_execution/remote_model_executor.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace optimization_guide {
// Mocks the streaming session returned by
// RemoteModelExecutor::StartStreamingSession so tests can observe the frames a
// feature sends without any network access.
class MockRemoteModelExecutionSession : public RemoteModelExecutionSession {
public:
MockRemoteModelExecutionSession();
~MockRemoteModelExecutionSession() override;
MOCK_METHOD(void, Send, (const google::protobuf::MessageLite&), (override));
// These are real implementations, rather than mocks, since the observer list
// bookkeeping they do is required for SetConnectionState() to work.
void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override;
// Notifies observers that the connection changed to `state`, as the real
// session does when its WebSocket connects or disconnects.
void SetConnectionState(ConnectionState state);
private:
base::ObserverList<Observer> observers_;
};
} // namespace optimization_guide
#endif // CHROME_BROWSER_OPTIMIZATION_GUIDE_MOCK_REMOTE_MODEL_EXECUTOR_H_