Add CanCloseDialog to WebDialogDelegate to allow blocking closing of dialog if needed.
[chromium-blink-merge.git] / gin / arguments.cc
blob284451479d5ebf8ea9181c6bac28a86847e97cc4
1 // Copyright 2013 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.
5 #include "gin/arguments.h"
7 #include "base/strings/stringprintf.h"
8 #include "gin/converter.h"
10 namespace gin {
12 Arguments::Arguments()
13 : isolate_(NULL),
14 info_(NULL),
15 next_(0),
16 insufficient_arguments_(false) {
19 Arguments::Arguments(const v8::FunctionCallbackInfo<v8::Value>& info)
20 : isolate_(info.GetIsolate()),
21 info_(&info),
22 next_(0),
23 insufficient_arguments_(false) {
26 Arguments::~Arguments() {
29 v8::Handle<v8::Value> Arguments::PeekNext() {
30 if (next_ >= info_->Length())
31 return v8::Handle<v8::Value>();
32 return (*info_)[next_];
35 void Arguments::ThrowError() {
36 if (insufficient_arguments_)
37 return ThrowTypeError("Insufficient number of arguments.");
39 ThrowTypeError(base::StringPrintf(
40 "Error processing argument %d.", next_ - 1));
43 void Arguments::ThrowTypeError(const std::string& message) {
44 isolate_->ThrowException(v8::Exception::TypeError(
45 StringToV8(isolate_, message)));
48 template<>
49 bool Arguments::GetNext<Arguments>(Arguments* out) {
50 *out = *this;
51 return true;
54 } // namespace gin