1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // 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 EXTENSIONS_BROWSER_SCRIPT_RESULT_QUEUE_H_
- #define EXTENSIONS_BROWSER_SCRIPT_RESULT_QUEUE_H_
- #include <vector>
- #include "base/callback.h"
- #include "base/scoped_observation.h"
- #include "base/values.h"
- #include "extensions/browser/api/test/test_api_observer.h"
- #include "extensions/browser/api/test/test_api_observer_registry.h"
- namespace extensions {
- // Intercepts results sent via chrome.test.sendScriptResult().
- // TODO(devlin): Add details of this class and sendScriptResult() to
- // //extensions/docs/extension_tests.md.
- class ScriptResultQueue : public TestApiObserver {
- public:
- ScriptResultQueue();
- ~ScriptResultQueue() override;
- // TestApiObserver:
- void OnScriptResult(const base::Value& script_result) override;
- // Returns the next result, optionally waiting for it to come in.
- base::Value GetNextResult();
- const std::vector<base::Value>& results() const { return results_; }
- private:
- // The index of the next result to return.
- size_t next_result_index_ = 0u;
- // The collection of all script results this queue has seen.
- std::vector<base::Value> results_;
- // Quit closure to call when waiting for a result.
- base::OnceClosure quit_closure_;
- base::ScopedObservation<TestApiObserverRegistry, TestApiObserver>
- test_api_observation_{this};
- };
- } // namespace extensions
- #endif // EXTENSIONS_BROWSER_SCRIPT_RESULT_QUEUE_H_
|