Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / extensions / browser / api / guest_view / extension_view / extension_view_internal_api.h
blobdee381c19caff52b53ccd49dfb150d864d3a3e01
1 // 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.
5 #ifndef EXTENSIONS_BROWSER_API_EXTENSION_VIEW_EXTENSION_VIEW_INTERNAL_API_H_
6 #define EXTENSIONS_BROWSER_API_EXTENSION_VIEW_EXTENSION_VIEW_INTERNAL_API_H_
8 #include "extensions/browser/api/capture_web_contents_function.h"
9 #include "extensions/browser/api/execute_code_function.h"
10 #include "extensions/browser/extension_function.h"
11 #include "extensions/browser/guest_view/extension_view/extension_view_guest.h"
13 namespace extensions {
15 // An abstract base class for async extensionview APIs. It does a process ID
16 // check in RunAsync, and then calls RunAsyncSafe which must be overriden by
17 // all subclasses.
18 class ExtensionViewInternalExtensionFunction : public AsyncExtensionFunction {
19 public:
20 ExtensionViewInternalExtensionFunction() {}
22 protected:
23 ~ExtensionViewInternalExtensionFunction() override {}
25 // ExtensionFunction implementation.
26 bool RunAsync() final;
28 private:
29 virtual bool RunAsyncSafe(ExtensionViewGuest* guest) = 0;
32 class ExtensionViewInternalNavigateFunction
33 : public ExtensionViewInternalExtensionFunction {
34 public:
35 DECLARE_EXTENSION_FUNCTION("extensionViewInternal.navigate",
36 EXTENSIONVIEWINTERNAL_NAVIGATE);
37 ExtensionViewInternalNavigateFunction() {}
39 protected:
40 ~ExtensionViewInternalNavigateFunction() override {}
42 private:
43 // ExtensionViewInternalExtensionFunction implementation.
44 bool RunAsyncSafe(ExtensionViewGuest* guest) override;
46 DISALLOW_COPY_AND_ASSIGN(ExtensionViewInternalNavigateFunction);
49 } // namespace extensions
51 #endif // CHROME_BROWSER_EXTENSIONS_API_EXTENSION_VIEW_EXTENSION_VIEW_INTERNAL_API_H_