blob: 14819277cbd711ad741e184c7941f3b34c8f6704 [file] [log] [blame]
kozyatinskiyc8bc9a582015-03-06 09:33:411// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef EXTENSIONS_RENDERER_SCRIPT_INJECTION_CALLBACK_H_
6#define EXTENSIONS_RENDERER_SCRIPT_INJECTION_CALLBACK_H_
7
rdevlin.cronin3e11c9862015-06-04 19:54:258#include "base/callback.h"
kozyatinskiyc8bc9a582015-03-06 09:33:419#include "base/macros.h"
10#include "third_party/WebKit/public/web/WebScriptExecutionCallback.h"
11#include "v8/include/v8.h"
12
13namespace blink {
kozyatinskiyc8bc9a582015-03-06 09:33:4114template<typename T> class WebVector;
15}
16
17namespace extensions {
kozyatinskiyc8bc9a582015-03-06 09:33:4118
19// A wrapper around a callback to notify a script injection when injection
20// completes.
21// This class manages its own lifetime.
22class ScriptInjectionCallback : public blink::WebScriptExecutionCallback {
23 public:
rdevlin.cronin3e11c9862015-06-04 19:54:2524 using CompleteCallback =
25 base::Callback<void(
26 const blink::WebVector<v8::Local<v8::Value>>& result)>;
27
28 ScriptInjectionCallback(const CompleteCallback& injection_completed_callback);
kozyatinskiyc8bc9a582015-03-06 09:33:4129 ~ScriptInjectionCallback() override;
30
31 void completed(
32 const blink::WebVector<v8::Local<v8::Value> >& result) override;
33
34 private:
rdevlin.cronin3e11c9862015-06-04 19:54:2535 CompleteCallback injection_completed_callback_;
kozyatinskiyc8bc9a582015-03-06 09:33:4136
37 DISALLOW_COPY_AND_ASSIGN(ScriptInjectionCallback);
38};
39
40} // namespace extensions
41
42#endif // EXTENSIONS_RENDERER_SCRIPT_INJECTION_CALLBACK_H_