File: parsed_params.cc

package info (click to toggle)
chromium 120.0.6099.224-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,112,112 kB
  • sloc: cpp: 32,907,025; ansic: 8,148,123; javascript: 3,679,536; python: 2,031,248; asm: 959,718; java: 804,675; xml: 617,256; sh: 111,417; objc: 100,835; perl: 88,443; cs: 53,032; makefile: 29,579; fortran: 24,137; php: 21,162; tcl: 21,147; sql: 20,809; ruby: 17,735; pascal: 12,864; yacc: 8,045; lisp: 3,388; lex: 1,323; ada: 727; awk: 329; jsp: 267; csh: 117; exp: 43; sed: 37
file content (63 lines) | stat: -rw-r--r-- 2,263 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "pdf/parsed_params.h"

#include <string>

#include "base/strings/string_number_conversions.h"
#include "pdf/pdfium/pdfium_form_filler.h"
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/platform/web_vector.h"
#include "third_party/blink/public/web/web_plugin_params.h"

namespace chrome_pdf {

ParsedParams::ParsedParams() = default;

ParsedParams::ParsedParams(const ParsedParams& other) = default;
ParsedParams& ParsedParams::operator=(const ParsedParams& other) = default;

ParsedParams::ParsedParams(ParsedParams&& other) = default;
ParsedParams& ParsedParams::operator=(ParsedParams&& other) = default;

ParsedParams::~ParsedParams() = default;

absl::optional<ParsedParams> ParseWebPluginParams(
    const blink::WebPluginParams& params) {
  ParsedParams result;
  for (size_t i = 0; i < params.attribute_names.size(); ++i) {
    if (params.attribute_names[i] == "src") {
      result.src_url = params.attribute_values[i].Utf8();
    } else if (params.attribute_names[i] == "original-url") {
      result.original_url = params.attribute_values[i].Utf8();
    } else if (params.attribute_names[i] == "top-level-url") {
      result.top_level_url = params.attribute_values[i].Utf8();
    } else if (params.attribute_names[i] == "full-frame") {
      result.full_frame = true;
    } else if (params.attribute_names[i] == "background-color") {
      if (!base::StringToUint(params.attribute_values[i].Utf8(),
                              &result.background_color)) {
        return absl::nullopt;
      }
    } else if (params.attribute_names[i] == "javascript") {
      if (params.attribute_values[i] != "allow")
        result.script_option = PDFiumFormFiller::ScriptOption::kNoJavaScript;
    } else if (params.attribute_names[i] == "has-edits") {
      result.has_edits = true;
    } else if (params.attribute_names[i] == "use-skia") {
      result.use_skia = true;
    }
  }

  if (result.src_url.empty())
    return absl::nullopt;

  if (result.original_url.empty())
    result.original_url = result.src_url;

  return result;
}

}  // namespace chrome_pdf