chore: add OCR scaffolding to PDF Viewer (#38127)
This commit is contained in:
parent
c548f8f59e
commit
d95f9d2c63
10 changed files with 234 additions and 1 deletions
|
@ -0,0 +1,90 @@
|
|||
// Copyright 2022 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "shell/browser/extensions/api/pdf_viewer_private/pdf_viewer_private_api.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "base/values.h"
|
||||
#include "chrome/common/extensions/api/pdf_viewer_private.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "shell/browser/electron_browser_context.h"
|
||||
#include "url/url_constants.h"
|
||||
|
||||
namespace extensions {
|
||||
|
||||
namespace {
|
||||
|
||||
namespace IsAllowedLocalFileAccess =
|
||||
api::pdf_viewer_private::IsAllowedLocalFileAccess;
|
||||
|
||||
namespace SetPdfOcrPref = api::pdf_viewer_private::SetPdfOcrPref;
|
||||
|
||||
// Check if the current URL is allowed based on a list of allowlisted domains.
|
||||
bool IsUrlAllowedToEmbedLocalFiles(
|
||||
const GURL& current_url,
|
||||
const base::Value::List& allowlisted_domains) {
|
||||
if (!current_url.is_valid() || !current_url.SchemeIs(url::kHttpsScheme)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto const& value : allowlisted_domains) {
|
||||
const std::string* domain = value.GetIfString();
|
||||
if (!domain) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (current_url.DomainIs(*domain)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction::
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction() = default;
|
||||
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction::
|
||||
~PdfViewerPrivateIsAllowedLocalFileAccessFunction() = default;
|
||||
|
||||
ExtensionFunction::ResponseAction
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction::Run() {
|
||||
absl::optional<IsAllowedLocalFileAccess::Params> params =
|
||||
IsAllowedLocalFileAccess::Params::Create(args());
|
||||
EXTENSION_FUNCTION_VALIDATE(params);
|
||||
|
||||
return RespondNow(WithArguments(
|
||||
IsUrlAllowedToEmbedLocalFiles(GURL(params->url), base::Value::List())));
|
||||
}
|
||||
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction::
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction() = default;
|
||||
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction::
|
||||
~PdfViewerPrivateIsPdfOcrAlwaysActiveFunction() = default;
|
||||
|
||||
// TODO(codebytere): enable when https://crbug.com/1393069 works properly.
|
||||
ExtensionFunction::ResponseAction
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction::Run() {
|
||||
return RespondNow(WithArguments(false));
|
||||
}
|
||||
|
||||
PdfViewerPrivateSetPdfOcrPrefFunction::PdfViewerPrivateSetPdfOcrPrefFunction() =
|
||||
default;
|
||||
|
||||
PdfViewerPrivateSetPdfOcrPrefFunction::
|
||||
~PdfViewerPrivateSetPdfOcrPrefFunction() = default;
|
||||
|
||||
// TODO(codebytere): enable when https://crbug.com/1393069 works properly.
|
||||
ExtensionFunction::ResponseAction PdfViewerPrivateSetPdfOcrPrefFunction::Run() {
|
||||
absl::optional<SetPdfOcrPref::Params> params =
|
||||
SetPdfOcrPref::Params::Create(args());
|
||||
EXTENSION_FUNCTION_VALIDATE(params);
|
||||
return RespondNow(WithArguments(false));
|
||||
}
|
||||
|
||||
} // namespace extensions
|
|
@ -0,0 +1,69 @@
|
|||
// Copyright 2022 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef ELECTRON_SHELL_BROWSER_EXTENSIONS_API_PDF_VIEWER_PRIVATE_PDF_VIEWER_PRIVATE_API_H_
|
||||
#define ELECTRON_SHELL_BROWSER_EXTENSIONS_API_PDF_VIEWER_PRIVATE_PDF_VIEWER_PRIVATE_API_H_
|
||||
|
||||
#include "extensions/browser/extension_function.h"
|
||||
|
||||
namespace extensions {
|
||||
|
||||
class PdfViewerPrivateIsAllowedLocalFileAccessFunction
|
||||
: public ExtensionFunction {
|
||||
public:
|
||||
DECLARE_EXTENSION_FUNCTION("pdfViewerPrivate.isAllowedLocalFileAccess",
|
||||
PDFVIEWERPRIVATE_ISALLOWEDLOCALFILEACCESS)
|
||||
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction();
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction(
|
||||
const PdfViewerPrivateIsAllowedLocalFileAccessFunction&) = delete;
|
||||
PdfViewerPrivateIsAllowedLocalFileAccessFunction& operator=(
|
||||
const PdfViewerPrivateIsAllowedLocalFileAccessFunction&) = delete;
|
||||
|
||||
protected:
|
||||
~PdfViewerPrivateIsAllowedLocalFileAccessFunction() override;
|
||||
|
||||
// Override from ExtensionFunction:
|
||||
ResponseAction Run() override;
|
||||
};
|
||||
|
||||
class PdfViewerPrivateIsPdfOcrAlwaysActiveFunction : public ExtensionFunction {
|
||||
public:
|
||||
DECLARE_EXTENSION_FUNCTION("pdfViewerPrivate.isPdfOcrAlwaysActive",
|
||||
PDFVIEWERPRIVATE_ISPDFOCRALWAYSACTIVE)
|
||||
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction();
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction(
|
||||
const PdfViewerPrivateIsPdfOcrAlwaysActiveFunction&) = delete;
|
||||
PdfViewerPrivateIsPdfOcrAlwaysActiveFunction& operator=(
|
||||
const PdfViewerPrivateIsPdfOcrAlwaysActiveFunction&) = delete;
|
||||
|
||||
protected:
|
||||
~PdfViewerPrivateIsPdfOcrAlwaysActiveFunction() override;
|
||||
|
||||
// Override from ExtensionFunction:
|
||||
ResponseAction Run() override;
|
||||
};
|
||||
|
||||
class PdfViewerPrivateSetPdfOcrPrefFunction : public ExtensionFunction {
|
||||
public:
|
||||
DECLARE_EXTENSION_FUNCTION("pdfViewerPrivate.setPdfOcrPref",
|
||||
PDFVIEWERPRIVATE_SETPDFOCRPREF)
|
||||
|
||||
PdfViewerPrivateSetPdfOcrPrefFunction();
|
||||
PdfViewerPrivateSetPdfOcrPrefFunction(
|
||||
const PdfViewerPrivateSetPdfOcrPrefFunction&) = delete;
|
||||
PdfViewerPrivateSetPdfOcrPrefFunction& operator=(
|
||||
const PdfViewerPrivateSetPdfOcrPrefFunction&) = delete;
|
||||
|
||||
protected:
|
||||
~PdfViewerPrivateSetPdfOcrPrefFunction() override;
|
||||
|
||||
// Override from ExtensionFunction:
|
||||
ResponseAction Run() override;
|
||||
};
|
||||
|
||||
} // namespace extensions
|
||||
|
||||
#endif // ELECTRON_SHELL_BROWSER_EXTENSIONS_API_PDF_VIEWER_PRIVATE_PDF_VIEWER_PRIVATE_API_H_
|
Loading…
Add table
Add a link
Reference in a new issue