Reland the ULONG -> SIZE_T change from 317177
[chromium-blink-merge.git] / extensions / renderer / programmatic_script_injector.h
blobe6655cdc0a714d524979fb45a4ab94590c183aff
1 // Copyright 2014 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.
5 #ifndef EXTENSIONS_RENDERER_PROGRAMMATIC_SCRIPT_INJECTOR_H_
6 #define EXTENSIONS_RENDERER_PROGRAMMATIC_SCRIPT_INJECTOR_H_
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "extensions/renderer/script_injection.h"
11 #include "url/gurl.h"
13 struct ExtensionMsg_ExecuteCode_Params;
15 namespace blink {
16 class WebFrame;
19 namespace content {
20 class RenderView;
23 namespace extensions {
25 // A ScriptInjector to handle tabs.executeScript().
26 class ProgrammaticScriptInjector : public ScriptInjector {
27 public:
28 ProgrammaticScriptInjector(const ExtensionMsg_ExecuteCode_Params& params,
29 blink::WebFrame* web_frame);
30 ~ProgrammaticScriptInjector() override;
32 private:
33 // ScriptInjector implementation.
34 UserScript::InjectionType script_type() const override;
35 bool ShouldExecuteInChildFrames() const override;
36 bool ShouldExecuteInMainWorld() const override;
37 bool IsUserGesture() const override;
38 bool ExpectsResults() const override;
39 bool ShouldInjectJs(UserScript::RunLocation run_location) const override;
40 bool ShouldInjectCss(UserScript::RunLocation run_location) const override;
41 PermissionsData::AccessType CanExecuteOnFrame(
42 const InjectionHost* injection_host,
43 blink::WebFrame* web_frame,
44 int tab_id,
45 const GURL& top_url) const override;
46 std::vector<blink::WebScriptSource> GetJsSources(
47 UserScript::RunLocation run_location) const override;
48 std::vector<std::string> GetCssSources(
49 UserScript::RunLocation run_location) const override;
50 void OnInjectionComplete(scoped_ptr<base::ListValue> execution_results,
51 ScriptsRunInfo* scripts_run_info,
52 UserScript::RunLocation run_location) override;
53 void OnWillNotInject(InjectFailureReason reason) override;
55 // Return the run location for this injector.
56 UserScript::RunLocation GetRunLocation() const;
58 // Notify the browser that the script was injected (or never will be), and
59 // send along any results or errors.
60 void Finish(const std::string& error);
62 // The parameters for injecting the script.
63 scoped_ptr<ExtensionMsg_ExecuteCode_Params> params_;
65 // The url of the frame into which we are injecting.
66 GURL url_;
68 // The RenderView to which we send the response upon completion.
69 content::RenderView* render_view_;
71 // The results of the script execution.
72 scoped_ptr<base::ListValue> results_;
74 // Whether or not this script injection has finished.
75 bool finished_;
77 DISALLOW_COPY_AND_ASSIGN(ProgrammaticScriptInjector);
80 } // namespace extensions
82 #endif // EXTENSIONS_RENDERER_PROGRAMMATIC_SCRIPT_INJECTOR_H_