123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // Copyright 2017 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_RENDERER_CONTENT_SETTING_H_
- #define EXTENSIONS_RENDERER_CONTENT_SETTING_H_
- #include <string>
- #include "extensions/renderer/bindings/argument_spec.h"
- #include "gin/wrappable.h"
- #include "v8/include/v8-forward.h"
- namespace base {
- class DictionaryValue;
- class ListValue;
- }
- namespace gin {
- class Arguments;
- }
- namespace extensions {
- class APIEventHandler;
- class APIRequestHandler;
- class BindingAccessChecker;
- // The custom implementation of the contentSettings.ContentSetting type exposed
- // to APIs.
- class ContentSetting final : public gin::Wrappable<ContentSetting> {
- public:
- ContentSetting(const ContentSetting&) = delete;
- ContentSetting& operator=(const ContentSetting&) = delete;
- ~ContentSetting() override;
- // Creates a ContentSetting object for the given property.
- static v8::Local<v8::Object> Create(
- v8::Isolate* isolate,
- const std::string& property_name,
- const base::ListValue* property_values,
- APIRequestHandler* request_handler,
- APIEventHandler* event_handler,
- APITypeReferenceMap* type_refs,
- const BindingAccessChecker* access_checker);
- static gin::WrapperInfo kWrapperInfo;
- gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
- v8::Isolate* isolate) override;
- const char* GetTypeName() override;
- private:
- ContentSetting(APIRequestHandler* request_handler,
- const APITypeReferenceMap* type_refs,
- const BindingAccessChecker* access_checker,
- const std::string& pref_name,
- const base::DictionaryValue& argument_spec);
- // JS function handlers:
- void Get(gin::Arguments* arguments);
- void Set(gin::Arguments* arguments);
- void Clear(gin::Arguments* arguments);
- void GetResourceIdentifiers(gin::Arguments* arguments);
- // Common function handling endpoint.
- void HandleFunction(const std::string& function_name,
- gin::Arguments* arguments);
- APIRequestHandler* request_handler_;
- const APITypeReferenceMap* type_refs_;
- const BindingAccessChecker* const access_checker_;
- // The name of the preference this ContentSetting is managing.
- std::string pref_name_;
- // The type of argument that calling set() on the ContentSetting expects
- // (since different settings can take a different type of argument depending
- // on the preference it manages).
- ArgumentSpec argument_spec_;
- };
- } // namespace extensions
- #endif // EXTENSIONS_RENDERER_CONTENT_SETTING_H_
|