0

Trigger LoadUrl() from PdfViewWebPlugin

Calls LoadUrl() from PdfViewWebPlugin with the URL from the "stream-url"
attribute. Combined with crrev.com/c/2330933 (WIP), this is sufficient
to start testing URL loading locally.

Logs NOTIMPLEMENTED() from PdfViewWebPlugin's DocumentLoadComplete() and
DocumentLoadFailed(), to make the outcome of loading obvious.

Bug: 1099022
Change-Id: I94084fe42151daf5e4084749eb6ba466e2a918df
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2411329
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Daniel Hosseinian <dhoss@chromium.org>
Commit-Queue: K. Moon <kmoon@chromium.org>
Cr-Commit-Position: refs/heads/master@{#806799}
This commit is contained in:
K. Moon
2020-09-15 01:00:55 +00:00
committed by Commit Bot
parent a68b0bea95
commit 37e23fcbc3
2 changed files with 32 additions and 5 deletions

@@ -8,6 +8,7 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <utility>
#include <vector> #include <vector>
#include "base/check_op.h" #include "base/check_op.h"
@@ -18,12 +19,15 @@
#include "cc/paint/paint_canvas.h" #include "cc/paint/paint_canvas.h"
#include "pdf/pdf_engine.h" #include "pdf/pdf_engine.h"
#include "pdf/pdf_init.h" #include "pdf/pdf_init.h"
#include "pdf/pdfium/pdfium_engine.h"
#include "pdf/ppapi_migration/url_loader.h" #include "pdf/ppapi_migration/url_loader.h"
#include "ppapi/c/pp_errors.h"
#include "third_party/blink/public/common/input/web_coalesced_input_event.h" #include "third_party/blink/public/common/input/web_coalesced_input_event.h"
#include "third_party/blink/public/common/metrics/document_update_reason.h" #include "third_party/blink/public/common/metrics/document_update_reason.h"
#include "third_party/blink/public/mojom/input/focus_type.mojom-shared.h" #include "third_party/blink/public/mojom/input/focus_type.mojom-shared.h"
#include "third_party/blink/public/platform/web_input_event_result.h" #include "third_party/blink/public/platform/web_input_event_result.h"
#include "third_party/blink/public/platform/web_rect.h" #include "third_party/blink/public/platform/web_rect.h"
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/platform/web_url_error.h" #include "third_party/blink/public/platform/web_url_error.h"
#include "third_party/blink/public/platform/web_url_response.h" #include "third_party/blink/public/platform/web_url_response.h"
#include "third_party/blink/public/web/web_associated_url_loader.h" #include "third_party/blink/public/web/web_associated_url_loader.h"
@@ -85,16 +89,28 @@ class PerProcessInitializer final {
} // namespace } // namespace
PdfViewWebPlugin::PdfViewWebPlugin(const blink::WebPluginParams& params) {} PdfViewWebPlugin::PdfViewWebPlugin(const blink::WebPluginParams& params)
: initial_params_(params) {}
PdfViewWebPlugin::~PdfViewWebPlugin() = default; PdfViewWebPlugin::~PdfViewWebPlugin() = default;
// Modeled on `OutOfProcessInstance::Init()`.
bool PdfViewWebPlugin::Initialize(blink::WebPluginContainer* container) { bool PdfViewWebPlugin::Initialize(blink::WebPluginContainer* container) {
DCHECK_EQ(container->Plugin(), this); DCHECK_EQ(container->Plugin(), this);
container_ = container; container_ = container;
std::string stream_url;
for (size_t i = 0; i < initial_params_.attribute_names.size(); ++i) {
if (initial_params_.attribute_names[i] == "stream-url")
stream_url = initial_params_.attribute_values[i].Utf8();
}
// Contents of `initial_params_` no longer needed.
initial_params_ = {};
PerProcessInitializer::GetInstance().Acquire(); PerProcessInitializer::GetInstance().Acquire();
InitializeEngine(/*enable_javascript=*/false); InitializeEngine(/*enable_javascript=*/false);
LoadUrl(stream_url, /*is_print_preview=*/false);
return true; return true;
} }
@@ -225,9 +241,13 @@ PdfViewWebPlugin::SearchString(const base::char16* string,
} }
void PdfViewWebPlugin::DocumentLoadComplete( void PdfViewWebPlugin::DocumentLoadComplete(
const PDFEngine::DocumentFeatures& document_features) {} const PDFEngine::DocumentFeatures& document_features) {
NOTIMPLEMENTED();
}
void PdfViewWebPlugin::DocumentLoadFailed() {} void PdfViewWebPlugin::DocumentLoadFailed() {
NOTIMPLEMENTED();
}
pp::Instance* PdfViewWebPlugin::GetPluginInstance() { pp::Instance* PdfViewWebPlugin::GetPluginInstance() {
return nullptr; return nullptr;
@@ -287,9 +307,15 @@ std::unique_ptr<UrlLoader> PdfViewWebPlugin::CreateUrlLoaderInternal() {
return loader; return loader;
} }
// Modeled on `OutOfProcessInstance::DidOpen()`.
void PdfViewWebPlugin::DidOpen(std::unique_ptr<UrlLoader> loader, void PdfViewWebPlugin::DidOpen(std::unique_ptr<UrlLoader> loader,
int32_t result) { int32_t result) {
NOTIMPLEMENTED(); if (result == PP_OK) {
if (!engine()->HandleDocumentLoad(std::move(loader)))
DocumentLoadFailed();
} else {
NOTIMPLEMENTED();
}
} }
void PdfViewWebPlugin::DidOpenPreview(std::unique_ptr<UrlLoader> loader, void PdfViewWebPlugin::DidOpenPreview(std::unique_ptr<UrlLoader> loader,

@@ -9,10 +9,10 @@
#include "pdf/pdf_view_plugin_base.h" #include "pdf/pdf_view_plugin_base.h"
#include "pdf/ppapi_migration/url_loader.h" #include "pdf/ppapi_migration/url_loader.h"
#include "third_party/blink/public/web/web_plugin.h" #include "third_party/blink/public/web/web_plugin.h"
#include "third_party/blink/public/web/web_plugin_params.h"
namespace blink { namespace blink {
class WebPluginContainer; class WebPluginContainer;
struct WebPluginParams;
} // namespace blink } // namespace blink
namespace chrome_pdf { namespace chrome_pdf {
@@ -117,6 +117,7 @@ class PdfViewWebPlugin final : public PdfViewPluginBase,
// Call `Destroy()` instead. // Call `Destroy()` instead.
~PdfViewWebPlugin() override; ~PdfViewWebPlugin() override;
blink::WebPluginParams initial_params_;
blink::WebPluginContainer* container_ = nullptr; blink::WebPluginContainer* container_ = nullptr;
base::WeakPtrFactory<PdfViewWebPlugin> weak_factory_{this}; base::WeakPtrFactory<PdfViewWebPlugin> weak_factory_{this};