2 // This file generated by DomDistillerJs protoc plugin.
3 #include "third_party/dom_distiller_js/dom_distiller.pb.h"
8 #include "base/values.h"
9 #include "base/memory/scoped_ptr.h"
13 namespace dom_distiller {
16 class DistilledContent {
18 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::DistilledContent* message) {
19 const base::DictionaryValue* dict;
20 if (!json->GetAsDictionary(&dict)) goto error;
21 if (dict->HasKey("1")) {
22 std::string field_value;
23 if (!dict->GetString("1", &field_value)) {
26 message->set_html(field_value);
34 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::DistilledContent& message) {
35 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
36 if (message.has_html()) {
37 dict->SetString("1", message.html());
39 return dict.PassAs<base::Value>();
43 class PaginationInfo {
45 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::PaginationInfo* message) {
46 const base::DictionaryValue* dict;
47 if (!json->GetAsDictionary(&dict)) goto error;
48 if (dict->HasKey("1")) {
49 std::string field_value;
50 if (!dict->GetString("1", &field_value)) {
53 message->set_next_page(field_value);
55 if (dict->HasKey("2")) {
56 std::string field_value;
57 if (!dict->GetString("2", &field_value)) {
60 message->set_prev_page(field_value);
62 if (dict->HasKey("3")) {
63 std::string field_value;
64 if (!dict->GetString("3", &field_value)) {
67 message->set_canonical_page(field_value);
75 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::PaginationInfo& message) {
76 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
77 if (message.has_next_page()) {
78 dict->SetString("1", message.next_page());
80 if (message.has_prev_page()) {
81 dict->SetString("2", message.prev_page());
83 if (message.has_canonical_page()) {
84 dict->SetString("3", message.canonical_page());
86 return dict.PassAs<base::Value>();
92 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::MarkupArticle* message) {
93 const base::DictionaryValue* dict;
94 if (!json->GetAsDictionary(&dict)) goto error;
95 if (dict->HasKey("1")) {
96 std::string field_value;
97 if (!dict->GetString("1", &field_value)) {
100 message->set_published_time(field_value);
102 if (dict->HasKey("2")) {
103 std::string field_value;
104 if (!dict->GetString("2", &field_value)) {
107 message->set_modified_time(field_value);
109 if (dict->HasKey("3")) {
110 std::string field_value;
111 if (!dict->GetString("3", &field_value)) {
114 message->set_expiration_time(field_value);
116 if (dict->HasKey("4")) {
117 std::string field_value;
118 if (!dict->GetString("4", &field_value)) {
121 message->set_section(field_value);
123 if (dict->HasKey("5")) {
124 const base::ListValue* field_list;
125 if (!dict->GetList("5", &field_list)) {
128 for (size_t i = 0; i < field_list->GetSize(); ++i) {
129 std::string field_value;
130 if (!field_list->GetString(i, &field_value)) {
133 message->add_authors(field_value);
142 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::MarkupArticle& message) {
143 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
144 if (message.has_published_time()) {
145 dict->SetString("1", message.published_time());
147 if (message.has_modified_time()) {
148 dict->SetString("2", message.modified_time());
150 if (message.has_expiration_time()) {
151 dict->SetString("3", message.expiration_time());
153 if (message.has_section()) {
154 dict->SetString("4", message.section());
156 base::ListValue* field_list = new base::ListValue();
157 dict->Set("5", field_list);
158 for (int i = 0; i < message.authors_size(); ++i) {
159 field_list->AppendString(message.authors(i));
161 return dict.PassAs<base::Value>();
167 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::MarkupImage* message) {
168 const base::DictionaryValue* dict;
169 if (!json->GetAsDictionary(&dict)) goto error;
170 if (dict->HasKey("1")) {
171 std::string field_value;
172 if (!dict->GetString("1", &field_value)) {
175 message->set_url(field_value);
177 if (dict->HasKey("2")) {
178 std::string field_value;
179 if (!dict->GetString("2", &field_value)) {
182 message->set_secure_url(field_value);
184 if (dict->HasKey("3")) {
185 std::string field_value;
186 if (!dict->GetString("3", &field_value)) {
189 message->set_type(field_value);
191 if (dict->HasKey("4")) {
192 std::string field_value;
193 if (!dict->GetString("4", &field_value)) {
196 message->set_caption(field_value);
198 if (dict->HasKey("5")) {
200 if (!dict->GetInteger("5", &field_value)) {
203 message->set_width(field_value);
205 if (dict->HasKey("6")) {
207 if (!dict->GetInteger("6", &field_value)) {
210 message->set_height(field_value);
218 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::MarkupImage& message) {
219 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
220 if (message.has_url()) {
221 dict->SetString("1", message.url());
223 if (message.has_secure_url()) {
224 dict->SetString("2", message.secure_url());
226 if (message.has_type()) {
227 dict->SetString("3", message.type());
229 if (message.has_caption()) {
230 dict->SetString("4", message.caption());
232 if (message.has_width()) {
233 dict->SetInteger("5", message.width());
235 if (message.has_height()) {
236 dict->SetInteger("6", message.height());
238 return dict.PassAs<base::Value>();
244 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::MarkupInfo* message) {
245 const base::DictionaryValue* dict;
246 if (!json->GetAsDictionary(&dict)) goto error;
247 if (dict->HasKey("1")) {
248 std::string field_value;
249 if (!dict->GetString("1", &field_value)) {
252 message->set_title(field_value);
254 if (dict->HasKey("2")) {
255 std::string field_value;
256 if (!dict->GetString("2", &field_value)) {
259 message->set_type(field_value);
261 if (dict->HasKey("3")) {
262 std::string field_value;
263 if (!dict->GetString("3", &field_value)) {
266 message->set_url(field_value);
268 if (dict->HasKey("4")) {
269 std::string field_value;
270 if (!dict->GetString("4", &field_value)) {
273 message->set_description(field_value);
275 if (dict->HasKey("5")) {
276 std::string field_value;
277 if (!dict->GetString("5", &field_value)) {
280 message->set_publisher(field_value);
282 if (dict->HasKey("6")) {
283 std::string field_value;
284 if (!dict->GetString("6", &field_value)) {
287 message->set_copyright(field_value);
289 if (dict->HasKey("7")) {
290 std::string field_value;
291 if (!dict->GetString("7", &field_value)) {
294 message->set_author(field_value);
296 if (dict->HasKey("8")) {
297 const base::Value* inner_message_value;
298 if (!dict->Get("8", &inner_message_value)) {
301 if (!dom_distiller::proto::json::MarkupArticle::ReadFromValue(inner_message_value, message->mutable_article())) {
305 if (dict->HasKey("9")) {
306 const base::ListValue* field_list;
307 if (!dict->GetList("9", &field_list)) {
310 for (size_t i = 0; i < field_list->GetSize(); ++i) {
311 const base::Value* inner_message_value;
312 if (!field_list->Get(i, &inner_message_value)) {
315 if (!dom_distiller::proto::json::MarkupImage::ReadFromValue(inner_message_value, message->add_images())) {
326 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::MarkupInfo& message) {
327 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
328 if (message.has_title()) {
329 dict->SetString("1", message.title());
331 if (message.has_type()) {
332 dict->SetString("2", message.type());
334 if (message.has_url()) {
335 dict->SetString("3", message.url());
337 if (message.has_description()) {
338 dict->SetString("4", message.description());
340 if (message.has_publisher()) {
341 dict->SetString("5", message.publisher());
343 if (message.has_copyright()) {
344 dict->SetString("6", message.copyright());
346 if (message.has_author()) {
347 dict->SetString("7", message.author());
349 if (message.has_article()) {
350 scoped_ptr<base::Value> inner_message_value =
351 dom_distiller::proto::json::MarkupArticle::WriteToValue(message.article());
352 dict->Set("8", inner_message_value.release());
354 base::ListValue* field_list = new base::ListValue();
355 dict->Set("9", field_list);
356 for (int i = 0; i < message.images_size(); ++i) {
357 scoped_ptr<base::Value> inner_message_value =
358 dom_distiller::proto::json::MarkupImage::WriteToValue(message.images(i));
359 field_list->Append(inner_message_value.release());
361 return dict.PassAs<base::Value>();
367 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::TimingInfo* message) {
368 const base::DictionaryValue* dict;
369 if (!json->GetAsDictionary(&dict)) goto error;
370 if (dict->HasKey("1")) {
372 if (!dict->GetDouble("1", &field_value)) {
375 message->set_markup_parsing_time(field_value);
377 if (dict->HasKey("2")) {
379 if (!dict->GetDouble("2", &field_value)) {
382 message->set_document_construction_time(field_value);
384 if (dict->HasKey("3")) {
386 if (!dict->GetDouble("3", &field_value)) {
389 message->set_article_processing_time(field_value);
391 if (dict->HasKey("4")) {
393 if (!dict->GetDouble("4", &field_value)) {
396 message->set_formatting_time(field_value);
398 if (dict->HasKey("5")) {
400 if (!dict->GetDouble("5", &field_value)) {
403 message->set_total_time(field_value);
411 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::TimingInfo& message) {
412 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
413 if (message.has_markup_parsing_time()) {
414 dict->SetDouble("1", message.markup_parsing_time());
416 if (message.has_document_construction_time()) {
417 dict->SetDouble("2", message.document_construction_time());
419 if (message.has_article_processing_time()) {
420 dict->SetDouble("3", message.article_processing_time());
422 if (message.has_formatting_time()) {
423 dict->SetDouble("4", message.formatting_time());
425 if (message.has_total_time()) {
426 dict->SetDouble("5", message.total_time());
428 return dict.PassAs<base::Value>();
434 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::DebugInfo* message) {
435 const base::DictionaryValue* dict;
436 if (!json->GetAsDictionary(&dict)) goto error;
437 if (dict->HasKey("1")) {
438 std::string field_value;
439 if (!dict->GetString("1", &field_value)) {
442 message->set_log(field_value);
450 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::DebugInfo& message) {
451 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
452 if (message.has_log()) {
453 dict->SetString("1", message.log());
455 return dict.PassAs<base::Value>();
459 class StatisticsInfo {
461 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::StatisticsInfo* message) {
462 const base::DictionaryValue* dict;
463 if (!json->GetAsDictionary(&dict)) goto error;
464 if (dict->HasKey("1")) {
466 if (!dict->GetInteger("1", &field_value)) {
469 message->set_word_count(field_value);
477 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::StatisticsInfo& message) {
478 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
479 if (message.has_word_count()) {
480 dict->SetInteger("1", message.word_count());
482 return dict.PassAs<base::Value>();
486 class DomDistillerResult {
488 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::DomDistillerResult* message) {
489 const base::DictionaryValue* dict;
490 if (!json->GetAsDictionary(&dict)) goto error;
491 if (dict->HasKey("1")) {
492 std::string field_value;
493 if (!dict->GetString("1", &field_value)) {
496 message->set_title(field_value);
498 if (dict->HasKey("2")) {
499 const base::Value* inner_message_value;
500 if (!dict->Get("2", &inner_message_value)) {
503 if (!dom_distiller::proto::json::DistilledContent::ReadFromValue(inner_message_value, message->mutable_distilled_content())) {
507 if (dict->HasKey("3")) {
508 const base::Value* inner_message_value;
509 if (!dict->Get("3", &inner_message_value)) {
512 if (!dom_distiller::proto::json::PaginationInfo::ReadFromValue(inner_message_value, message->mutable_pagination_info())) {
516 if (dict->HasKey("4")) {
517 const base::ListValue* field_list;
518 if (!dict->GetList("4", &field_list)) {
521 for (size_t i = 0; i < field_list->GetSize(); ++i) {
522 std::string field_value;
523 if (!field_list->GetString(i, &field_value)) {
526 message->add_image_urls(field_value);
529 if (dict->HasKey("5")) {
530 const base::Value* inner_message_value;
531 if (!dict->Get("5", &inner_message_value)) {
534 if (!dom_distiller::proto::json::MarkupInfo::ReadFromValue(inner_message_value, message->mutable_markup_info())) {
538 if (dict->HasKey("6")) {
539 const base::Value* inner_message_value;
540 if (!dict->Get("6", &inner_message_value)) {
543 if (!dom_distiller::proto::json::TimingInfo::ReadFromValue(inner_message_value, message->mutable_timing_info())) {
547 if (dict->HasKey("7")) {
548 const base::Value* inner_message_value;
549 if (!dict->Get("7", &inner_message_value)) {
552 if (!dom_distiller::proto::json::DebugInfo::ReadFromValue(inner_message_value, message->mutable_debug_info())) {
556 if (dict->HasKey("8")) {
557 const base::Value* inner_message_value;
558 if (!dict->Get("8", &inner_message_value)) {
561 if (!dom_distiller::proto::json::StatisticsInfo::ReadFromValue(inner_message_value, message->mutable_statistics_info())) {
571 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::DomDistillerResult& message) {
572 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
573 if (message.has_title()) {
574 dict->SetString("1", message.title());
576 if (message.has_distilled_content()) {
577 scoped_ptr<base::Value> inner_message_value =
578 dom_distiller::proto::json::DistilledContent::WriteToValue(message.distilled_content());
579 dict->Set("2", inner_message_value.release());
581 if (message.has_pagination_info()) {
582 scoped_ptr<base::Value> inner_message_value =
583 dom_distiller::proto::json::PaginationInfo::WriteToValue(message.pagination_info());
584 dict->Set("3", inner_message_value.release());
586 base::ListValue* field_list = new base::ListValue();
587 dict->Set("4", field_list);
588 for (int i = 0; i < message.image_urls_size(); ++i) {
589 field_list->AppendString(message.image_urls(i));
591 if (message.has_markup_info()) {
592 scoped_ptr<base::Value> inner_message_value =
593 dom_distiller::proto::json::MarkupInfo::WriteToValue(message.markup_info());
594 dict->Set("5", inner_message_value.release());
596 if (message.has_timing_info()) {
597 scoped_ptr<base::Value> inner_message_value =
598 dom_distiller::proto::json::TimingInfo::WriteToValue(message.timing_info());
599 dict->Set("6", inner_message_value.release());
601 if (message.has_debug_info()) {
602 scoped_ptr<base::Value> inner_message_value =
603 dom_distiller::proto::json::DebugInfo::WriteToValue(message.debug_info());
604 dict->Set("7", inner_message_value.release());
606 if (message.has_statistics_info()) {
607 scoped_ptr<base::Value> inner_message_value =
608 dom_distiller::proto::json::StatisticsInfo::WriteToValue(message.statistics_info());
609 dict->Set("8", inner_message_value.release());
611 return dict.PassAs<base::Value>();
615 class DomDistillerOptions {
617 static bool ReadFromValue(const base::Value* json, dom_distiller::proto::DomDistillerOptions* message) {
618 const base::DictionaryValue* dict;
619 if (!json->GetAsDictionary(&dict)) goto error;
620 if (dict->HasKey("1")) {
622 if (!dict->GetBoolean("1", &field_value)) {
625 message->set_extract_text_only(field_value);
627 if (dict->HasKey("2")) {
629 if (!dict->GetInteger("2", &field_value)) {
632 message->set_debug_level(field_value);
640 static scoped_ptr<base::Value> WriteToValue(const dom_distiller::proto::DomDistillerOptions& message) {
641 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
642 if (message.has_extract_text_only()) {
643 dict->SetBoolean("1", message.extract_text_only());
645 if (message.has_debug_level()) {
646 dict->SetInteger("2", message.debug_level());
648 return dict.PassAs<base::Value>();