listen to ipc messages from plugin to perform SaveAs op
This commit is contained in:
parent
fd8c450ef3
commit
0c7bb72891
9 changed files with 286 additions and 2 deletions
|
@ -7,8 +7,10 @@
|
|||
#include <map>
|
||||
|
||||
#include "atom/browser/ui/webui/pdf_viewer_handler.h"
|
||||
#include "components/pdf/common/pdf_messages.h"
|
||||
#include "content/public/browser/render_view_host.h"
|
||||
#include "content/public/browser/url_data_source.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "content/public/common/bindings_policy.h"
|
||||
#include "grit/pdf_viewer_resources_map.h"
|
||||
#include "net/base/mime_util.h"
|
||||
|
@ -82,13 +84,32 @@ const char PdfViewerUI::kHost[] = "pdf-viewer";
|
|||
PdfViewerUI::PdfViewerUI(content::BrowserContext* browser_context,
|
||||
content::WebUI* web_ui,
|
||||
const std::string& view_id)
|
||||
: content::WebUIController(web_ui) {
|
||||
: content::WebUIController(web_ui),
|
||||
content::WebContentsObserver(web_ui->GetWebContents()) {
|
||||
web_ui->AddMessageHandler(new PdfViewerHandler(view_id));
|
||||
content::URLDataSource::Add(browser_context, new BundledDataSource);
|
||||
}
|
||||
|
||||
PdfViewerUI::~PdfViewerUI() {}
|
||||
|
||||
void PdfViewerUI::RenderViewCreated(content::RenderViewHost* rvh) {
|
||||
rvh->AllowBindings(content::BINDINGS_POLICY_WEB_UI);
|
||||
}
|
||||
|
||||
bool PdfViewerUI::OnMessageReceived(
|
||||
const IPC::Message& message,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
bool handled = true;
|
||||
IPC_BEGIN_MESSAGE_MAP(PdfViewerUI, message)
|
||||
IPC_MESSAGE_HANDLER(PDFHostMsg_PDFSaveURLAs, OnSaveURLAs)
|
||||
IPC_MESSAGE_UNHANDLED(handled = false)
|
||||
IPC_END_MESSAGE_MAP()
|
||||
return handled;
|
||||
}
|
||||
|
||||
void PdfViewerUI::OnSaveURLAs(const GURL& url,
|
||||
const content::Referrer& referrer) {
|
||||
web_contents()->SaveFrame(url, referrer);
|
||||
}
|
||||
|
||||
} // namespace atom
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
#include <string>
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "content/public/browser/web_contents_observer.h"
|
||||
#include "content/public/browser/web_ui_controller.h"
|
||||
#include "ipc/ipc_message.h"
|
||||
|
||||
namespace content {
|
||||
class BrowserContext;
|
||||
|
@ -16,18 +18,26 @@ class BrowserContext;
|
|||
|
||||
namespace atom {
|
||||
|
||||
class PdfViewerUI : public content::WebUIController {
|
||||
class PdfViewerUI : public content::WebUIController,
|
||||
public content::WebContentsObserver {
|
||||
public:
|
||||
static const char kHost[];
|
||||
|
||||
PdfViewerUI(content::BrowserContext* browser_context,
|
||||
content::WebUI* web_ui,
|
||||
const std::string& view_id);
|
||||
~PdfViewerUI() override;
|
||||
|
||||
// content::WebUIController implementation.
|
||||
void RenderViewCreated(content::RenderViewHost* rvh) override;
|
||||
|
||||
// content::WebContentsObserver:
|
||||
bool OnMessageReceived(const IPC::Message& message,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
|
||||
private:
|
||||
void OnSaveURLAs(const GURL& url, const content::Referrer& referrer);
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(PdfViewerUI);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue