// Copyright 2014 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_STATIC_V8_EXTERNAL_ONE_BYTE_STRING_RESOURCE_H_
#define EXTENSIONS_RENDERER_STATIC_V8_EXTERNAL_ONE_BYTE_STRING_RESOURCE_H_

#include "base/compiler_specific.h"
#include "base/strings/string_piece.h"
#include "v8/include/v8.h"

namespace extensions {

// A very simple implementation of v8::ExternalAsciiStringResource that just
// wraps a buffer. The buffer must outlive the v8 runtime instance this resource
// is used in.
class StaticV8ExternalOneByteStringResource
    : public v8::String::ExternalOneByteStringResource {
 public:
  explicit StaticV8ExternalOneByteStringResource(
      const base::StringPiece& buffer);
  ~StaticV8ExternalOneByteStringResource() override;

  const char* data() const override;
  size_t length() const override;

 private:
  base::StringPiece buffer_;
};

}  // namespace extensions

#endif  // EXTENSIONS_RENDERER_STATIC_V8_EXTERNAL_ONE_BYTE_STRING_RESOURCE_H_