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.
4
5#ifndef EXTENSIONS_RENDERER_SET_ICON_NATIVES_H_
6#define EXTENSIONS_RENDERER_SET_ICON_NATIVES_H_
7
8#include "extensions/renderer/object_backed_native_handler.h"
9#include "v8/include/v8.h"
10
11namespace base {
12class DictionaryValue;
13class Value;
14}
15
16namespace extensions {
17class RequestSender;
18class ScriptContext;
19
20// Functions exposed to extension JS to implement the setIcon extension API.
21class SetIconNatives : public ObjectBackedNativeHandler {
22 public:
23  SetIconNatives(RequestSender* request_sender, ScriptContext* context);
24
25 private:
26  bool ConvertImageDataToBitmapValue(const v8::Local<v8::Object> image_data,
27                                     base::Value** bitmap_value);
28  bool ConvertImageDataSetToBitmapValueSet(
29      const v8::FunctionCallbackInfo<v8::Value>& args,
30      base::DictionaryValue* bitmap_value);
31  void SetIconCommon(const v8::FunctionCallbackInfo<v8::Value>& args);
32
33  RequestSender* request_sender_;
34
35  DISALLOW_COPY_AND_ASSIGN(SetIconNatives);
36};
37
38}  // namespace extensions
39
40#endif  // EXTENSIONS_RENDERER_SET_ICON_NATIVES_H_
41