blob: 01785d79a9418de889150d2c1bbc9d695122245f [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/video_tutorials/internal/proto_conversions.h"
#include "base/notreached.h"
namespace video_tutorials {
FeatureType ToFeatureType(proto::FeatureType type) {
switch (type) {
case proto::FeatureType::INVALID:
return FeatureType::kInvalid;
case proto::FeatureType::SUMMARY:
return FeatureType::kSummary;
case proto::FeatureType::CHROME_INTRO:
return FeatureType::kChromeIntro;
case proto::FeatureType::DOWNLOAD:
return FeatureType::kDownload;
case proto::FeatureType::SEARCH:
return FeatureType::kSearch;
case proto::FeatureType::VOICE_SEARCH:
return FeatureType::kVoiceSearch;
case proto::FeatureType::TEST:
return FeatureType::kTest;
default:
return static_cast<FeatureType>(type);
}
}
proto::FeatureType FromFeatureType(FeatureType type) {
switch (type) {
case FeatureType::kInvalid:
return proto::FeatureType::INVALID;
case FeatureType::kSummary:
return proto::FeatureType::SUMMARY;
case FeatureType::kChromeIntro:
return proto::FeatureType::CHROME_INTRO;
case FeatureType::kDownload:
return proto::FeatureType::DOWNLOAD;
case FeatureType::kSearch:
return proto::FeatureType::SEARCH;
case FeatureType::kVoiceSearch:
return proto::FeatureType::VOICE_SEARCH;
case FeatureType::kTest:
return proto::FeatureType::TEST;
default:
return static_cast<proto::FeatureType>(type);
}
}
void TutorialFromProto(const proto::VideoTutorial* proto, Tutorial* tutorial) {
DCHECK(tutorial);
DCHECK(proto);
tutorial->feature = ToFeatureType(proto->feature());
tutorial->title = proto->title();
tutorial->video_url = GURL(proto->video_url());
tutorial->share_url = GURL(proto->share_url());
tutorial->poster_url = GURL(proto->poster_url());
tutorial->animated_gif_url = GURL(proto->animated_gif_url());
tutorial->thumbnail_url = GURL(proto->thumbnail_url());
tutorial->caption_url = GURL(proto->caption_url());
tutorial->video_length = proto->video_length();
}
std::vector<Tutorial> TutorialsFromProto(
const proto::VideoTutorialGroup* proto) {
std::vector<Tutorial> tutorials;
DCHECK(proto);
for (const auto& tutorial_proto : proto->tutorials()) {
Tutorial tutorial;
TutorialFromProto(&tutorial_proto, &tutorial);
tutorials.emplace_back(std::move(tutorial));
}
return tutorials;
}
} // namespace video_tutorials