idltest_api.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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#include "chrome/browser/extensions/api/idltest/idltest_api.h"
6
7#include "base/values.h"
8
9using base::BinaryValue;
10
11namespace {
12
13ListValue* CopyBinaryValueToIntegerList(const BinaryValue* input) {
14  ListValue* output = new ListValue();
15  const char* input_buffer = input->GetBuffer();
16  for (size_t i = 0; i < input->GetSize(); i++) {
17    output->Append(Value::CreateIntegerValue(input_buffer[i]));
18  }
19  return output;
20}
21
22}
23
24bool IdltestSendArrayBufferFunction::RunImpl() {
25  BinaryValue* input = NULL;
26  EXTENSION_FUNCTION_VALIDATE(args_ != NULL && args_->GetBinary(0, &input));
27  SetResult(CopyBinaryValueToIntegerList(input));
28  return true;
29}
30
31bool IdltestSendArrayBufferViewFunction::RunImpl() {
32  BinaryValue* input = NULL;
33  EXTENSION_FUNCTION_VALIDATE(args_ != NULL && args_->GetBinary(0, &input));
34  SetResult(CopyBinaryValueToIntegerList(input));
35  return true;
36}
37
38bool IdltestGetArrayBufferFunction::RunImpl() {
39  std::string hello = "hello world";
40  BinaryValue* output =
41      BinaryValue::CreateWithCopiedBuffer(hello.c_str(), hello.size());
42  SetResult(output);
43  return true;
44}
45