// Copyright (c) 2019 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 // extensions/common/api/display_source.idl // DO NOT EDIT. #include "tools/json_schema_compiler/util.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "extensions/common/api/display_source.h" #include #include using base::UTF8ToUTF16; namespace extensions { namespace api { namespace display_source { // // Types // const char* ToString(ErrorType enum_param) { switch (enum_param) { case ERROR_TYPE_CONNECTION_ERROR: return "connection_error"; case ERROR_TYPE_CAPABILITIES_NEGOTIATION_ERROR: return "capabilities_negotiation_error"; case ERROR_TYPE_MEDIA_PIPELINE_ERROR: return "media_pipeline_error"; case ERROR_TYPE_TIMEOUT_ERROR: return "timeout_error"; case ERROR_TYPE_UNKNOWN_ERROR: return "unknown_error"; case ERROR_TYPE_NONE: return ""; } NOTREACHED(); return ""; } ErrorType ParseErrorType(const std::string& enum_string) { if (enum_string == "connection_error") return ERROR_TYPE_CONNECTION_ERROR; if (enum_string == "capabilities_negotiation_error") return ERROR_TYPE_CAPABILITIES_NEGOTIATION_ERROR; if (enum_string == "media_pipeline_error") return ERROR_TYPE_MEDIA_PIPELINE_ERROR; if (enum_string == "timeout_error") return ERROR_TYPE_TIMEOUT_ERROR; if (enum_string == "unknown_error") return ERROR_TYPE_UNKNOWN_ERROR; return ERROR_TYPE_NONE; } ErrorInfo::ErrorInfo() : type(ERROR_TYPE_NONE) {} ErrorInfo::~ErrorInfo() {} ErrorInfo::ErrorInfo(ErrorInfo&& rhs) : type(rhs.type), description(std::move(rhs.description)){ } ErrorInfo& ErrorInfo::operator=(ErrorInfo&& rhs) { type = rhs.type; description = std::move(rhs.description); return *this; } // static bool ErrorInfo::Populate( const base::Value& value, ErrorInfo* out) { if (!value.is_dict()) { return false; } const base::DictionaryValue* dict = static_cast(&value); const base::Value* type_value = NULL; if (!dict->GetWithoutPathExpansion("type", &type_value)) { return false; } { std::string error_type_as_string; if (!type_value->GetAsString(&error_type_as_string)) { return false; } out->type = ParseErrorType(error_type_as_string); if (out->type == ERROR_TYPE_NONE) { return false; } } const base::Value* description_value = NULL; if (dict->GetWithoutPathExpansion("description", &description_value)) { { std::string temp; if (!description_value->GetAsString(&temp)) { out->description.reset(); return false; } else out->description.reset(new std::string(temp)); } } return true; } // static std::unique_ptr ErrorInfo::FromValue(const base::Value& value) { std::unique_ptr out(new ErrorInfo()); if (!Populate(value, out.get())) return nullptr; return out; } std::unique_ptr ErrorInfo::ToValue() const { std::unique_ptr value(new base::DictionaryValue()); value->SetWithoutPathExpansion("type", std::make_unique(display_source::ToString(this->type))); if (this->description.get()) { value->SetWithoutPathExpansion("description", std::make_unique(*this->description)); } return value; } const char* ToString(SinkState enum_param) { switch (enum_param) { case SINK_STATE_CONNECTED: return "Connected"; case SINK_STATE_CONNECTING: return "Connecting"; case SINK_STATE_DISCONNECTED: return "Disconnected"; case SINK_STATE_NONE: return ""; } NOTREACHED(); return ""; } SinkState ParseSinkState(const std::string& enum_string) { if (enum_string == "Connected") return SINK_STATE_CONNECTED; if (enum_string == "Connecting") return SINK_STATE_CONNECTING; if (enum_string == "Disconnected") return SINK_STATE_DISCONNECTED; return SINK_STATE_NONE; } SinkInfo::SinkInfo() : id(0), state(SINK_STATE_NONE) {} SinkInfo::~SinkInfo() {} SinkInfo::SinkInfo(SinkInfo&& rhs) : id(rhs.id), name(std::move(rhs.name)), state(rhs.state){ } SinkInfo& SinkInfo::operator=(SinkInfo&& rhs) { id = rhs.id; name = std::move(rhs.name); state = rhs.state; return *this; } // static bool SinkInfo::Populate( const base::Value& value, SinkInfo* out) { if (!value.is_dict()) { return false; } const base::DictionaryValue* dict = static_cast(&value); const base::Value* id_value = NULL; if (!dict->GetWithoutPathExpansion("id", &id_value)) { return false; } { if (!id_value->GetAsInteger(&out->id)) { return false; } } const base::Value* name_value = NULL; if (!dict->GetWithoutPathExpansion("name", &name_value)) { return false; } { if (!name_value->GetAsString(&out->name)) { return false; } } const base::Value* state_value = NULL; if (!dict->GetWithoutPathExpansion("state", &state_value)) { return false; } { std::string sink_state_as_string; if (!state_value->GetAsString(&sink_state_as_string)) { return false; } out->state = ParseSinkState(sink_state_as_string); if (out->state == SINK_STATE_NONE) { return false; } } return true; } // static std::unique_ptr SinkInfo::FromValue(const base::Value& value) { std::unique_ptr out(new SinkInfo()); if (!Populate(value, out.get())) return nullptr; return out; } std::unique_ptr SinkInfo::ToValue() const { std::unique_ptr value(new base::DictionaryValue()); value->SetWithoutPathExpansion("id", std::make_unique(this->id)); value->SetWithoutPathExpansion("name", std::make_unique(this->name)); value->SetWithoutPathExpansion("state", std::make_unique(display_source::ToString(this->state))); return value; } const char* ToString(AuthenticationMethod enum_param) { switch (enum_param) { case AUTHENTICATION_METHOD_PBC: return "PBC"; case AUTHENTICATION_METHOD_PIN: return "PIN"; case AUTHENTICATION_METHOD_NONE: return ""; } NOTREACHED(); return ""; } AuthenticationMethod ParseAuthenticationMethod(const std::string& enum_string) { if (enum_string == "PBC") return AUTHENTICATION_METHOD_PBC; if (enum_string == "PIN") return AUTHENTICATION_METHOD_PIN; return AUTHENTICATION_METHOD_NONE; } AuthenticationInfo::AuthenticationInfo() : method(AUTHENTICATION_METHOD_NONE) {} AuthenticationInfo::~AuthenticationInfo() {} AuthenticationInfo::AuthenticationInfo(AuthenticationInfo&& rhs) : method(rhs.method), data(std::move(rhs.data)){ } AuthenticationInfo& AuthenticationInfo::operator=(AuthenticationInfo&& rhs) { method = rhs.method; data = std::move(rhs.data); return *this; } // static bool AuthenticationInfo::Populate( const base::Value& value, AuthenticationInfo* out) { if (!value.is_dict()) { return false; } const base::DictionaryValue* dict = static_cast(&value); const base::Value* method_value = NULL; if (!dict->GetWithoutPathExpansion("method", &method_value)) { return false; } { std::string authentication_method_as_string; if (!method_value->GetAsString(&authentication_method_as_string)) { return false; } out->method = ParseAuthenticationMethod(authentication_method_as_string); if (out->method == AUTHENTICATION_METHOD_NONE) { return false; } } const base::Value* data_value = NULL; if (dict->GetWithoutPathExpansion("data", &data_value)) { { std::string temp; if (!data_value->GetAsString(&temp)) { out->data.reset(); return false; } else out->data.reset(new std::string(temp)); } } return true; } // static std::unique_ptr AuthenticationInfo::FromValue(const base::Value& value) { std::unique_ptr out(new AuthenticationInfo()); if (!Populate(value, out.get())) return nullptr; return out; } std::unique_ptr AuthenticationInfo::ToValue() const { std::unique_ptr value(new base::DictionaryValue()); value->SetWithoutPathExpansion("method", std::make_unique(display_source::ToString(this->method))); if (this->data.get()) { value->SetWithoutPathExpansion("data", std::make_unique(*this->data)); } return value; } StartSessionInfo::AudioTrack::AudioTrack() {} StartSessionInfo::AudioTrack::~AudioTrack() {} StartSessionInfo::AudioTrack::AudioTrack(AudioTrack&& rhs) { additional_properties.Swap(&rhs.additional_properties); } StartSessionInfo::AudioTrack& StartSessionInfo::AudioTrack::operator=(AudioTrack&& rhs) { additional_properties.Swap(&rhs.additional_properties); return *this; } // static bool StartSessionInfo::AudioTrack::Populate( const base::Value& value, AudioTrack* out) { if (!value.is_dict()) { return false; } const base::DictionaryValue* dict = static_cast(&value); out->additional_properties.MergeDictionary(dict); return true; } std::unique_ptr StartSessionInfo::AudioTrack::ToValue() const { std::unique_ptr value(new base::DictionaryValue()); value->MergeDictionary(&additional_properties); return value; } StartSessionInfo::VideoTrack::VideoTrack() {} StartSessionInfo::VideoTrack::~VideoTrack() {} StartSessionInfo::VideoTrack::VideoTrack(VideoTrack&& rhs) { additional_properties.Swap(&rhs.additional_properties); } StartSessionInfo::VideoTrack& StartSessionInfo::VideoTrack::operator=(VideoTrack&& rhs) { additional_properties.Swap(&rhs.additional_properties); return *this; } // static bool StartSessionInfo::VideoTrack::Populate( const base::Value& value, VideoTrack* out) { if (!value.is_dict()) { return false; } const base::DictionaryValue* dict = static_cast(&value); out->additional_properties.MergeDictionary(dict); return true; } std::unique_ptr StartSessionInfo::VideoTrack::ToValue() const { std::unique_ptr value(new base::DictionaryValue()); value->MergeDictionary(&additional_properties); return value; } StartSessionInfo::StartSessionInfo() : sink_id(0) {} StartSessionInfo::~StartSessionInfo() {} StartSessionInfo::StartSessionInfo(StartSessionInfo&& rhs) : sink_id(rhs.sink_id), authentication_info(std::move(rhs.authentication_info)), audio_track(std::move(rhs.audio_track)), video_track(std::move(rhs.video_track)){ } StartSessionInfo& StartSessionInfo::operator=(StartSessionInfo&& rhs) { sink_id = rhs.sink_id; authentication_info = std::move(rhs.authentication_info); audio_track = std::move(rhs.audio_track); video_track = std::move(rhs.video_track); return *this; } // static bool StartSessionInfo::Populate( const base::Value& value, StartSessionInfo* out) { if (!value.is_dict()) { return false; } const base::DictionaryValue* dict = static_cast(&value); const base::Value* sink_id_value = NULL; if (!dict->GetWithoutPathExpansion("sinkId", &sink_id_value)) { return false; } { if (!sink_id_value->GetAsInteger(&out->sink_id)) { return false; } } const base::Value* authentication_info_value = NULL; if (dict->GetWithoutPathExpansion("authenticationInfo", &authentication_info_value)) { { const base::DictionaryValue* dictionary = NULL; if (!authentication_info_value->GetAsDictionary(&dictionary)) { return false; } else { std::unique_ptr temp(new AuthenticationInfo()); if (!AuthenticationInfo::Populate(*dictionary, temp.get())) { return false; } else out->authentication_info = std::move(temp); } } } const base::Value* audio_track_value = NULL; if (dict->GetWithoutPathExpansion("audioTrack", &audio_track_value)) { { const base::DictionaryValue* dictionary = NULL; if (!audio_track_value->GetAsDictionary(&dictionary)) { return false; } else { std::unique_ptr temp(new AudioTrack()); if (!AudioTrack::Populate(*dictionary, temp.get())) { return false; } else out->audio_track = std::move(temp); } } } const base::Value* video_track_value = NULL; if (dict->GetWithoutPathExpansion("videoTrack", &video_track_value)) { { const base::DictionaryValue* dictionary = NULL; if (!video_track_value->GetAsDictionary(&dictionary)) { return false; } else { std::unique_ptr temp(new VideoTrack()); if (!VideoTrack::Populate(*dictionary, temp.get())) { return false; } else out->video_track = std::move(temp); } } } return true; } // static std::unique_ptr StartSessionInfo::FromValue(const base::Value& value) { std::unique_ptr out(new StartSessionInfo()); if (!Populate(value, out.get())) return nullptr; return out; } std::unique_ptr StartSessionInfo::ToValue() const { std::unique_ptr value(new base::DictionaryValue()); value->SetWithoutPathExpansion("sinkId", std::make_unique(this->sink_id)); if (this->authentication_info.get()) { value->SetWithoutPathExpansion("authenticationInfo", (this->authentication_info)->ToValue()); } if (this->audio_track.get()) { value->SetWithoutPathExpansion("audioTrack", (this->audio_track)->ToValue()); } if (this->video_track.get()) { value->SetWithoutPathExpansion("videoTrack", (this->video_track)->ToValue()); } return value; } // // Functions // namespace GetAvailableSinks { std::unique_ptr Results::Create(const std::vector& result) { std::unique_ptr create_results(new base::ListValue()); create_results->Append(json_schema_compiler::util::CreateValueFromArray(result)); return create_results; } } // namespace GetAvailableSinks namespace RequestAuthentication { Params::Params() {} Params::~Params() {} // static std::unique_ptr Params::Create(const base::ListValue& args) { if (args.GetSize() != 1) { return nullptr; } std::unique_ptr params(new Params()); const base::Value* sink_id_value = NULL; if (args.Get(0, &sink_id_value) && !sink_id_value->is_none()) { { if (!sink_id_value->GetAsInteger(¶ms->sink_id)) { return std::unique_ptr(); } } } else { return std::unique_ptr(); } return params; } std::unique_ptr Results::Create(const AuthenticationInfo& result) { std::unique_ptr create_results(new base::ListValue()); create_results->Append((result).ToValue()); return create_results; } } // namespace RequestAuthentication // // Events // namespace OnSinksUpdated { const char kEventName[] = "displaySource.onSinksUpdated"; std::unique_ptr Create(const std::vector& sinks) { std::unique_ptr create_results(new base::ListValue()); create_results->Append(json_schema_compiler::util::CreateValueFromArray(sinks)); return create_results; } } // namespace OnSinksUpdated } // namespace display_source } // namespace api } // namespace extensions