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_STATIC_V8_EXTERNAL_ASCII_STRING_RESOURCE_H_
6#define EXTENSIONS_RENDERER_STATIC_V8_EXTERNAL_ASCII_STRING_RESOURCE_H_
7
8#include "base/compiler_specific.h"
9#include "base/strings/string_piece.h"
10#include "v8/include/v8.h"
11
12namespace extensions {
13
14// A very simple implementation of v8::ExternalAsciiStringResource that just
15// wraps a buffer. The buffer must outlive the v8 runtime instance this resource
16// is used in.
17class StaticV8ExternalAsciiStringResource
18    : public v8::String::ExternalAsciiStringResource {
19 public:
20  explicit StaticV8ExternalAsciiStringResource(const base::StringPiece& buffer);
21  virtual ~StaticV8ExternalAsciiStringResource();
22
23  virtual const char* data() const OVERRIDE;
24  virtual size_t length() const OVERRIDE;
25
26 private:
27  base::StringPiece buffer_;
28};
29
30}  // namespace extensions
31
32#endif  // EXTENSIONS_RENDERER_STATIC_V8_EXTERNAL_ASCII_STRING_RESOURCE_H_
33