Add GCMChannelStatusSyncer to schedule requests and enable/disable GCM
[chromium-blink-merge.git] / gin / arguments.cc
blob6703fc2de53c4a874f6015a886d1903f825bfcac
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() const {
30 if (next_ >= info_->Length())
31 return v8::Handle<v8::Value>();
32 return (*info_)[next_];
35 void Arguments::ThrowError() const {
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) const {
44 isolate_->ThrowException(v8::Exception::TypeError(
45 StringToV8(isolate_, message)));
48 bool Arguments::IsConstructCall() const {
49 return info_->IsConstructCall();
52 } // namespace gin