// 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_NATIVE_HANDLER_H_
#define EXTENSIONS_RENDERER_NATIVE_HANDLER_H_

#include "base/basictypes.h"
#include "v8/include/v8.h"

namespace extensions {

// NativeHandlers are intended to be used with a ModuleSystem. The ModuleSystem
// will assume ownership of the NativeHandler, and as a ModuleSystem is tied to
// a single v8::Context, this implies that NativeHandlers will also be tied to
// a single v8::Context.
// TODO(koz): Rename this to NativeJavaScriptModule.
class NativeHandler {
 public:
  NativeHandler();
  virtual ~NativeHandler();

  // Create a new instance of the object this handler specifies.
  virtual v8::Local<v8::Object> NewInstance() = 0;

  // Invalidate this object so it cannot be used any more. This is needed
  // because it's possible for this to outlive its owner context. Invalidate
  // must be called before this happens.
  //
  // Subclasses should override to invalidate their own V8 state. If they do
  // they must call their superclass' Invalidate().
  //
  // Invalidate() will be called on destruction, if it hasn't already been.
  // Subclasses don't need to do it themselves.
  virtual void Invalidate();

 protected:
  // Allow subclasses to query valid state.
  bool is_valid() { return is_valid_; }

 private:
  bool is_valid_;

  DISALLOW_COPY_AND_ASSIGN(NativeHandler);
};

}  // namespace extensions

#endif  // EXTENSIONS_RENDERER_NATIVE_HANDLER_H_
