| Index: generated_files_will_not_submit/tabs.cc
|
| diff --git a/generated_files_will_not_submit/tabs.cc b/generated_files_will_not_submit/tabs.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4a75885f7ea73be624afe820714cda5780210be4
|
| --- /dev/null
|
| +++ b/generated_files_will_not_submit/tabs.cc
|
| @@ -0,0 +1,1258 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +// GENERATED FROM THE API DEFINITION IN
|
| +// chrome/common/extensions/api/tabs.json
|
| +// DO NOT EDIT.
|
| +
|
| +#include "tools/json_schema_compiler/util.h"
|
| +#include "chrome/common/extensions/api/tabs.h"
|
| +#include "chrome/common/extensions/api/windows.h"
|
| +
|
| +
|
| +using base::Value;
|
| +using base::DictionaryValue;
|
| +using base::ListValue;
|
| +
|
| +namespace extensions {
|
| +namespace api {
|
| +namespace tabs {
|
| +
|
| +//
|
| +// Types
|
| +//
|
| +
|
| +Tab::Tab() {}
|
| +Tab::~Tab() {}
|
| +
|
| +// static
|
| +bool Tab::Populate(const Value& value, Tab* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* status_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("status", &status_value)) {
|
| + {
|
| + if (!status_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (status_value->GetAsString(&temp))
|
| + out->status.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* index_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("index", &index_value))
|
| + return false;
|
| + {
|
| + if (!index_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + if (!index_value->GetAsInteger(&out->index))
|
| + return false;
|
| + }
|
| +
|
| + Value* opener_tab_id_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("openerTabId", &opener_tab_id_value)) {
|
| + {
|
| + if (!opener_tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (opener_tab_id_value->GetAsInteger(&temp))
|
| + out->opener_tab_id.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* pinned_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("pinned", &pinned_value))
|
| + return false;
|
| + {
|
| + if (!pinned_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + if (!pinned_value->GetAsBoolean(&out->pinned))
|
| + return false;
|
| + }
|
| +
|
| + Value* title_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("title", &title_value)) {
|
| + {
|
| + if (!title_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (title_value->GetAsString(&temp))
|
| + out->title.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* url_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("url", &url_value))
|
| + return false;
|
| + {
|
| + if (!url_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + if (!url_value->GetAsString(&out->url))
|
| + return false;
|
| + }
|
| +
|
| + Value* selected_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("selected", &selected_value))
|
| + return false;
|
| + {
|
| + if (!selected_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + if (!selected_value->GetAsBoolean(&out->selected))
|
| + return false;
|
| + }
|
| +
|
| + Value* highlighted_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("highlighted", &highlighted_value))
|
| + return false;
|
| + {
|
| + if (!highlighted_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + if (!highlighted_value->GetAsBoolean(&out->highlighted))
|
| + return false;
|
| + }
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("windowId", &window_id_value))
|
| + return false;
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + if (!window_id_value->GetAsInteger(&out->window_id))
|
| + return false;
|
| + }
|
| +
|
| + Value* active_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("active", &active_value))
|
| + return false;
|
| + {
|
| + if (!active_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + if (!active_value->GetAsBoolean(&out->active))
|
| + return false;
|
| + }
|
| +
|
| + Value* fav_icon_url_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("favIconUrl", &fav_icon_url_value)) {
|
| + {
|
| + if (!fav_icon_url_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (fav_icon_url_value->GetAsString(&temp))
|
| + out->fav_icon_url.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* id_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("id", &id_value))
|
| + return false;
|
| + {
|
| + if (!id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + if (!id_value->GetAsInteger(&out->id))
|
| + return false;
|
| + }
|
| +
|
| + Value* incognito_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("incognito", &incognito_value))
|
| + return false;
|
| + {
|
| + if (!incognito_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + if (!incognito_value->GetAsBoolean(&out->incognito))
|
| + return false;
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +scoped_ptr<DictionaryValue> Tab::ToValue() const {
|
| + scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| +
|
| + if (status.get())
|
| + value->SetWithoutPathExpansion("status", Value::CreateStringValue(*status));
|
| + value->SetWithoutPathExpansion("index", Value::CreateIntegerValue(index));
|
| + if (opener_tab_id.get())
|
| + value->SetWithoutPathExpansion("openerTabId", Value::CreateIntegerValue(*opener_tab_id));
|
| + value->SetWithoutPathExpansion("pinned", Value::CreateBooleanValue(pinned));
|
| + if (title.get())
|
| + value->SetWithoutPathExpansion("title", Value::CreateStringValue(*title));
|
| + value->SetWithoutPathExpansion("url", Value::CreateStringValue(url));
|
| + value->SetWithoutPathExpansion("selected", Value::CreateBooleanValue(selected));
|
| + value->SetWithoutPathExpansion("highlighted", Value::CreateBooleanValue(highlighted));
|
| + value->SetWithoutPathExpansion("windowId", Value::CreateIntegerValue(window_id));
|
| + value->SetWithoutPathExpansion("active", Value::CreateBooleanValue(active));
|
| + if (fav_icon_url.get())
|
| + value->SetWithoutPathExpansion("favIconUrl", Value::CreateStringValue(*fav_icon_url));
|
| + value->SetWithoutPathExpansion("id", Value::CreateIntegerValue(id));
|
| + value->SetWithoutPathExpansion("incognito", Value::CreateBooleanValue(incognito));
|
| +
|
| + return value.Pass();
|
| +}
|
| +
|
| +
|
| +//
|
| +// Functions
|
| +//
|
| +
|
| +ExecuteScript::Params::Details::Details() {}
|
| +ExecuteScript::Params::Details::~Details() {}
|
| +
|
| +// static
|
| +bool ExecuteScript::Params::Details::Populate(const Value& value, Details* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* all_frames_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("allFrames", &all_frames_value)) {
|
| + {
|
| + if (!all_frames_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (all_frames_value->GetAsBoolean(&temp))
|
| + out->all_frames.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* code_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("code", &code_value)) {
|
| + {
|
| + if (!code_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (code_value->GetAsString(&temp))
|
| + out->code.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* file_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("file", &file_value)) {
|
| + {
|
| + if (!file_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (file_value->GetAsString(&temp))
|
| + out->file.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +ExecuteScript::Params::Params() {}
|
| +ExecuteScript::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<ExecuteScript::Params> ExecuteScript::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() < 1 || args.GetSize() > 2)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_id_value = NULL;
|
| + if (!args.Get(0, &tab_id_value) || tab_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (tab_id_value->GetAsInteger(&temp))
|
| + params->tab_id.reset(new int(temp));
|
| + }
|
| +
|
| + Value* details_value = NULL;
|
| + if (!args.Get(1, &details_value) || details_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!details_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!details_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!Details::Populate(*dictionary, ¶ms->details))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* ExecuteScript::Result::Create() {
|
| + return Value::CreateNullValue();
|
| +}
|
| +
|
| +Get::Params::Params() {}
|
| +Get::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Get::Params> Get::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() != 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_id_value = NULL;
|
| + if (!args.Get(0, &tab_id_value) || tab_id_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + if (!tab_id_value->GetAsInteger(¶ms->tab_id))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Get::Result::Create(const Tab& tab) {
|
| + return tab.ToValue().release();
|
| +}
|
| +
|
| +Value* GetCurrent::Result::Create(const Tab& tab) {
|
| + return tab.ToValue().release();
|
| +}
|
| +
|
| +Create::Params::CreateProperties::CreateProperties() {}
|
| +Create::Params::CreateProperties::~CreateProperties() {}
|
| +
|
| +// static
|
| +bool Create::Params::CreateProperties::Populate(const Value& value, CreateProperties* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* index_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("index", &index_value)) {
|
| + {
|
| + if (!index_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (index_value->GetAsInteger(&temp))
|
| + out->index.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* opener_tab_id_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("openerTabId", &opener_tab_id_value)) {
|
| + {
|
| + if (!opener_tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (opener_tab_id_value->GetAsInteger(&temp))
|
| + out->opener_tab_id.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* url_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("url", &url_value)) {
|
| + {
|
| + if (!url_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (url_value->GetAsString(&temp))
|
| + out->url.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* selected_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("selected", &selected_value)) {
|
| + {
|
| + if (!selected_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (selected_value->GetAsBoolean(&temp))
|
| + out->selected.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* pinned_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("pinned", &pinned_value)) {
|
| + {
|
| + if (!pinned_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (pinned_value->GetAsBoolean(&temp))
|
| + out->pinned.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("windowId", &window_id_value)) {
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (window_id_value->GetAsInteger(&temp))
|
| + out->window_id.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* active_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("active", &active_value)) {
|
| + {
|
| + if (!active_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (active_value->GetAsBoolean(&temp))
|
| + out->active.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +Create::Params::Params() {}
|
| +Create::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Create::Params> Create::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() != 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* create_properties_value = NULL;
|
| + if (!args.Get(0, &create_properties_value) || create_properties_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!create_properties_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!create_properties_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!CreateProperties::Populate(*dictionary, ¶ms->create_properties))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Create::Result::Create(const Tab& tab) {
|
| + return tab.ToValue().release();
|
| +}
|
| +
|
| +Move::Params::MoveProperties::MoveProperties() {}
|
| +Move::Params::MoveProperties::~MoveProperties() {}
|
| +
|
| +// static
|
| +bool Move::Params::MoveProperties::Populate(const Value& value, MoveProperties* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* index_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("index", &index_value))
|
| + return false;
|
| + {
|
| + if (!index_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + if (!index_value->GetAsInteger(&out->index))
|
| + return false;
|
| + }
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("windowId", &window_id_value)) {
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (window_id_value->GetAsInteger(&temp))
|
| + out->window_id.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +Move::Params::Params() {}
|
| +Move::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Move::Params> Move::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() != 2)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_ids_value = NULL;
|
| + if (!args.Get(0, &tab_ids_value) || tab_ids_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + params->tab_ids_type = TAB_IDS_NONE;
|
| + switch (tab_ids_value->GetType()) {
|
| + case Value::TYPE_INTEGER: {
|
| + {
|
| + int temp;
|
| + if (tab_ids_value->GetAsInteger(&temp))
|
| + params->tab_ids_integer.reset(new int(temp));
|
| + }
|
| + params->tab_ids_type = TAB_IDS_INTEGER;
|
| + break;
|
| + }
|
| + case Value::TYPE_LIST: {
|
| + {
|
| + ListValue* list = NULL;
|
| + if (!tab_ids_value->GetAsList(&list))
|
| + return scoped_ptr<Params>();
|
| + if (!json_schema_compiler::util::PopulateOptionalArrayFromList(*list, ¶ms->tab_ids_array))
|
| + return scoped_ptr<Params>();
|
| + }
|
| + params->tab_ids_type = TAB_IDS_ARRAY;
|
| + break;
|
| + }
|
| + default:
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + Value* move_properties_value = NULL;
|
| + if (!args.Get(1, &move_properties_value) || move_properties_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!move_properties_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!move_properties_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!MoveProperties::Populate(*dictionary, ¶ms->move_properties))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Move::Result::Create(const Tab& tabs_ref) {
|
| + return tabs_ref.ToValue().release();
|
| +}
|
| +Value* Move::Result::Create(const std::vector<linked_ptr<Tab> >& tabs_array) {
|
| + ListValue* value = new ListValue();
|
| + json_schema_compiler::util::PopulateListFromArray(tabs_array, value);
|
| + return value;
|
| +}
|
| +
|
| +Update::Params::UpdateProperties::UpdateProperties() {}
|
| +Update::Params::UpdateProperties::~UpdateProperties() {}
|
| +
|
| +// static
|
| +bool Update::Params::UpdateProperties::Populate(const Value& value, UpdateProperties* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* highlighted_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("highlighted", &highlighted_value)) {
|
| + {
|
| + if (!highlighted_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (highlighted_value->GetAsBoolean(&temp))
|
| + out->highlighted.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* opener_tab_id_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("openerTabId", &opener_tab_id_value)) {
|
| + {
|
| + if (!opener_tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (opener_tab_id_value->GetAsInteger(&temp))
|
| + out->opener_tab_id.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* url_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("url", &url_value)) {
|
| + {
|
| + if (!url_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (url_value->GetAsString(&temp))
|
| + out->url.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* selected_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("selected", &selected_value)) {
|
| + {
|
| + if (!selected_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (selected_value->GetAsBoolean(&temp))
|
| + out->selected.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* pinned_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("pinned", &pinned_value)) {
|
| + {
|
| + if (!pinned_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (pinned_value->GetAsBoolean(&temp))
|
| + out->pinned.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* active_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("active", &active_value)) {
|
| + {
|
| + if (!active_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (active_value->GetAsBoolean(&temp))
|
| + out->active.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +Update::Params::Params() {}
|
| +Update::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Update::Params> Update::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() < 1 || args.GetSize() > 2)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_id_value = NULL;
|
| + if (!args.Get(0, &tab_id_value) || tab_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (tab_id_value->GetAsInteger(&temp))
|
| + params->tab_id.reset(new int(temp));
|
| + }
|
| +
|
| + Value* update_properties_value = NULL;
|
| + if (!args.Get(1, &update_properties_value) || update_properties_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!update_properties_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!update_properties_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!UpdateProperties::Populate(*dictionary, ¶ms->update_properties))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Update::Result::Create(const Tab& tab) {
|
| + return tab.ToValue().release();
|
| +}
|
| +
|
| +Remove::Params::Params() {}
|
| +Remove::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Remove::Params> Remove::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() != 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_ids_value = NULL;
|
| + if (!args.Get(0, &tab_ids_value) || tab_ids_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + params->tab_ids_type = TAB_IDS_NONE;
|
| + switch (tab_ids_value->GetType()) {
|
| + case Value::TYPE_INTEGER: {
|
| + {
|
| + int temp;
|
| + if (tab_ids_value->GetAsInteger(&temp))
|
| + params->tab_ids_integer.reset(new int(temp));
|
| + }
|
| + params->tab_ids_type = TAB_IDS_INTEGER;
|
| + break;
|
| + }
|
| + case Value::TYPE_LIST: {
|
| + {
|
| + ListValue* list = NULL;
|
| + if (!tab_ids_value->GetAsList(&list))
|
| + return scoped_ptr<Params>();
|
| + if (!json_schema_compiler::util::PopulateOptionalArrayFromList(*list, ¶ms->tab_ids_array))
|
| + return scoped_ptr<Params>();
|
| + }
|
| + params->tab_ids_type = TAB_IDS_ARRAY;
|
| + break;
|
| + }
|
| + default:
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Remove::Result::Create() {
|
| + return Value::CreateNullValue();
|
| +}
|
| +
|
| +CaptureVisibleTab::Params::Options::Options() {}
|
| +CaptureVisibleTab::Params::Options::~Options() {}
|
| +
|
| +// static
|
| +bool CaptureVisibleTab::Params::Options::Populate(const Value& value, Options* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* quality_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("quality", &quality_value)) {
|
| + {
|
| + if (!quality_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (quality_value->GetAsInteger(&temp))
|
| + out->quality.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* format_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("format", &format_value)) {
|
| + {
|
| + if (!format_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (format_value->GetAsString(&temp))
|
| + out->format.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +CaptureVisibleTab::Params::Params() {}
|
| +CaptureVisibleTab::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<CaptureVisibleTab::Params> CaptureVisibleTab::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() > 2)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (!args.Get(0, &window_id_value) || window_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (window_id_value->GetAsInteger(&temp))
|
| + params->window_id.reset(new int(temp));
|
| + }
|
| +
|
| + Value* options_value = NULL;
|
| + if (!args.Get(1, &options_value) || options_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!options_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!options_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Options> temp(new Options());
|
| + if (!Options::Populate(*dictionary, temp.get()))
|
| + return scoped_ptr<Params>();
|
| + params->options = temp.Pass();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* CaptureVisibleTab::Result::Create(const std::string data_url) {
|
| + return Value::CreateStringValue(data_url);
|
| +}
|
| +
|
| +Reload::Params::ReloadProperties::ReloadProperties() {}
|
| +Reload::Params::ReloadProperties::~ReloadProperties() {}
|
| +
|
| +// static
|
| +bool Reload::Params::ReloadProperties::Populate(const Value& value, ReloadProperties* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* bypass_cache_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("bypassCache", &bypass_cache_value)) {
|
| + {
|
| + if (!bypass_cache_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (bypass_cache_value->GetAsBoolean(&temp))
|
| + out->bypass_cache.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +Reload::Params::Params() {}
|
| +Reload::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Reload::Params> Reload::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() > 2)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_id_value = NULL;
|
| + if (!args.Get(0, &tab_id_value) || tab_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (tab_id_value->GetAsInteger(&temp))
|
| + params->tab_id.reset(new int(temp));
|
| + }
|
| +
|
| + Value* reload_properties_value = NULL;
|
| + if (!args.Get(1, &reload_properties_value) || reload_properties_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!reload_properties_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!reload_properties_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<ReloadProperties> temp(new ReloadProperties());
|
| + if (!ReloadProperties::Populate(*dictionary, temp.get()))
|
| + return scoped_ptr<Params>();
|
| + params->reload_properties = temp.Pass();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Reload::Result::Create() {
|
| + return Value::CreateNullValue();
|
| +}
|
| +
|
| +DetectLanguage::Params::Params() {}
|
| +DetectLanguage::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<DetectLanguage::Params> DetectLanguage::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() > 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_id_value = NULL;
|
| + if (!args.Get(0, &tab_id_value) || tab_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (tab_id_value->GetAsInteger(&temp))
|
| + params->tab_id.reset(new int(temp));
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* DetectLanguage::Result::Create(const std::string language) {
|
| + return Value::CreateStringValue(language);
|
| +}
|
| +
|
| +InsertCSS::Params::Details::Details() {}
|
| +InsertCSS::Params::Details::~Details() {}
|
| +
|
| +// static
|
| +bool InsertCSS::Params::Details::Populate(const Value& value, Details* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* all_frames_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("allFrames", &all_frames_value)) {
|
| + {
|
| + if (!all_frames_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (all_frames_value->GetAsBoolean(&temp))
|
| + out->all_frames.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* code_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("code", &code_value)) {
|
| + {
|
| + if (!code_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (code_value->GetAsString(&temp))
|
| + out->code.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* file_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("file", &file_value)) {
|
| + {
|
| + if (!file_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (file_value->GetAsString(&temp))
|
| + out->file.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +InsertCSS::Params::Params() {}
|
| +InsertCSS::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<InsertCSS::Params> InsertCSS::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() < 1 || args.GetSize() > 2)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* tab_id_value = NULL;
|
| + if (!args.Get(0, &tab_id_value) || tab_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!tab_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (tab_id_value->GetAsInteger(&temp))
|
| + params->tab_id.reset(new int(temp));
|
| + }
|
| +
|
| + Value* details_value = NULL;
|
| + if (!args.Get(1, &details_value) || details_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!details_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!details_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!Details::Populate(*dictionary, ¶ms->details))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* InsertCSS::Result::Create() {
|
| + return Value::CreateNullValue();
|
| +}
|
| +
|
| +Highlight::Params::HighlightInfo::HighlightInfo() {}
|
| +Highlight::Params::HighlightInfo::~HighlightInfo() {}
|
| +
|
| +// static
|
| +bool Highlight::Params::HighlightInfo::Populate(const Value& value, HighlightInfo* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* tabs_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("tabs", &tabs_value))
|
| + return false;
|
| + out->tabs_type = TABS_NONE;
|
| + switch (tabs_value->GetType()) {
|
| + case Value::TYPE_LIST: {
|
| + {
|
| + ListValue* list = NULL;
|
| + if (!tabs_value->GetAsList(&list))
|
| + return false;
|
| + if (!json_schema_compiler::util::PopulateOptionalArrayFromList(*list, &out->tabs_array))
|
| + return false;
|
| + }
|
| + out->tabs_type = TABS_ARRAY;
|
| + break;
|
| + }
|
| + case Value::TYPE_INTEGER: {
|
| + {
|
| + int temp;
|
| + if (tabs_value->GetAsInteger(&temp))
|
| + out->tabs_integer.reset(new int(temp));
|
| + }
|
| + out->tabs_type = TABS_INTEGER;
|
| + break;
|
| + }
|
| + default:
|
| + return false;
|
| + }
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (!dict->GetWithoutPathExpansion("windowId", &window_id_value))
|
| + return false;
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + if (!window_id_value->GetAsInteger(&out->window_id))
|
| + return false;
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +Highlight::Params::Params() {}
|
| +Highlight::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Highlight::Params> Highlight::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() != 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* highlight_info_value = NULL;
|
| + if (!args.Get(0, &highlight_info_value) || highlight_info_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!highlight_info_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!highlight_info_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!HighlightInfo::Populate(*dictionary, ¶ms->highlight_info))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Highlight::Result::Create(const windows::Window& window) {
|
| + return window.ToValue().release();
|
| +}
|
| +
|
| +Query::Params::QueryInfo::QueryInfo() {}
|
| +Query::Params::QueryInfo::~QueryInfo() {}
|
| +
|
| +// static
|
| +bool Query::Params::QueryInfo::Populate(const Value& value, QueryInfo* out) {
|
| + if (!value.IsType(Value::TYPE_DICTIONARY))
|
| + return false;
|
| + const DictionaryValue* dict = static_cast<const DictionaryValue*>(&value);
|
| +
|
| + Value* status_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("status", &status_value)) {
|
| + {
|
| + if (!status_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (status_value->GetAsString(&temp))
|
| + out->status.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* pinned_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("pinned", &pinned_value)) {
|
| + {
|
| + if (!pinned_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (pinned_value->GetAsBoolean(&temp))
|
| + out->pinned.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* index_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("index", &index_value)) {
|
| + {
|
| + if (!index_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (index_value->GetAsInteger(&temp))
|
| + out->index.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* url_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("url", &url_value)) {
|
| + {
|
| + if (!url_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (url_value->GetAsString(&temp))
|
| + out->url.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* title_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("title", &title_value)) {
|
| + {
|
| + if (!title_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (title_value->GetAsString(&temp))
|
| + out->title.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* highlighted_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("highlighted", &highlighted_value)) {
|
| + {
|
| + if (!highlighted_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (highlighted_value->GetAsBoolean(&temp))
|
| + out->highlighted.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("windowId", &window_id_value)) {
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return false;
|
| + int temp;
|
| + if (window_id_value->GetAsInteger(&temp))
|
| + out->window_id.reset(new int(temp));
|
| + }
|
| + }
|
| +
|
| + Value* window_type_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("windowType", &window_type_value)) {
|
| + {
|
| + if (!window_type_value->IsType(Value::TYPE_STRING))
|
| + return false;
|
| + std::string temp;
|
| + if (window_type_value->GetAsString(&temp))
|
| + out->window_type.reset(new std::string(temp));
|
| + }
|
| + }
|
| +
|
| + Value* active_value = NULL;
|
| + if (dict->GetWithoutPathExpansion("active", &active_value)) {
|
| + {
|
| + if (!active_value->IsType(Value::TYPE_BOOLEAN))
|
| + return false;
|
| + bool temp;
|
| + if (active_value->GetAsBoolean(&temp))
|
| + out->active.reset(new bool(temp));
|
| + }
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +
|
| +
|
| +Query::Params::Params() {}
|
| +Query::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<Query::Params> Query::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() != 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* query_info_value = NULL;
|
| + if (!args.Get(0, &query_info_value) || query_info_value->IsType(Value::TYPE_NULL))
|
| + return scoped_ptr<Params>();
|
| + {
|
| + if (!query_info_value->IsType(Value::TYPE_DICTIONARY))
|
| + return scoped_ptr<Params>();
|
| + DictionaryValue* dictionary = NULL;
|
| + if (!query_info_value->GetAsDictionary(&dictionary))
|
| + return scoped_ptr<Params>();
|
| + if (!QueryInfo::Populate(*dictionary, ¶ms->query_info))
|
| + return scoped_ptr<Params>();
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* Query::Result::Create(const std::vector<linked_ptr<Tab> >& result) {
|
| + ListValue* value = new ListValue();
|
| + json_schema_compiler::util::PopulateListFromArray(result, value);
|
| + return value;
|
| +}
|
| +
|
| +GetSelected::Params::Params() {}
|
| +GetSelected::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<GetSelected::Params> GetSelected::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() > 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (!args.Get(0, &window_id_value) || window_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (window_id_value->GetAsInteger(&temp))
|
| + params->window_id.reset(new int(temp));
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* GetSelected::Result::Create(const Tab& tab) {
|
| + return tab.ToValue().release();
|
| +}
|
| +
|
| +GetAllInWindow::Params::Params() {}
|
| +GetAllInWindow::Params::~Params() {}
|
| +
|
| +// static
|
| +scoped_ptr<GetAllInWindow::Params> GetAllInWindow::Params::Create(const ListValue& args) {
|
| + if (args.GetSize() > 1)
|
| + return scoped_ptr<Params>();
|
| + scoped_ptr<Params> params(new Params());
|
| +
|
| + Value* window_id_value = NULL;
|
| + if (!args.Get(0, &window_id_value) || window_id_value->IsType(Value::TYPE_NULL))
|
| + return params.Pass();
|
| + {
|
| + if (!window_id_value->IsType(Value::TYPE_INTEGER))
|
| + return scoped_ptr<Params>();
|
| + int temp;
|
| + if (window_id_value->GetAsInteger(&temp))
|
| + params->window_id.reset(new int(temp));
|
| + }
|
| +
|
| + return params.Pass();
|
| +}
|
| +
|
| +
|
| +Value* GetAllInWindow::Result::Create(const std::vector<linked_ptr<Tab> >& tabs) {
|
| + ListValue* value = new ListValue();
|
| + json_schema_compiler::util::PopulateListFromArray(tabs, value);
|
| + return value;
|
| +}
|
| +
|
| +} // tabs
|
| +} // api
|
| +} // extensions
|
|
|