mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
chrome: Add support for PdfViewerTest ceftests (see issue #3047)
We need to override ChromeMimeHandlerViewGuestDelegate to handle OnGuestAttached/Detached callbacks in order to account for the guest renderer process hosting the PDF extension. Additional work will be required to account for the renderer process hosting the PDF viewer when using `--enable-features=PdfUnseasoned` (see issue #2969).
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// Copyright 2015 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright 2014 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.h"
|
||||
|
||||
#include "libcef/browser/browser_host_base.h"
|
||||
#include "libcef/browser/browser_info.h"
|
||||
|
||||
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
|
||||
|
||||
namespace extensions {
|
||||
|
||||
ChromeMimeHandlerViewGuestDelegateCef::ChromeMimeHandlerViewGuestDelegateCef(
|
||||
MimeHandlerViewGuest* guest)
|
||||
: guest_(guest), owner_web_contents_(guest_->owner_web_contents()) {}
|
||||
|
||||
ChromeMimeHandlerViewGuestDelegateCef::
|
||||
~ChromeMimeHandlerViewGuestDelegateCef() = default;
|
||||
|
||||
void ChromeMimeHandlerViewGuestDelegateCef::OnGuestAttached() {
|
||||
content::WebContents* web_contents = guest_->web_contents();
|
||||
DCHECK(web_contents);
|
||||
|
||||
auto owner_browser =
|
||||
CefBrowserHostBase::GetBrowserForContents(owner_web_contents_);
|
||||
DCHECK(owner_browser);
|
||||
|
||||
// Associate guest state information with the owner browser.
|
||||
owner_browser->browser_info()->MaybeCreateFrame(web_contents->GetMainFrame(),
|
||||
true /* is_guest_view */);
|
||||
}
|
||||
|
||||
void ChromeMimeHandlerViewGuestDelegateCef::OnGuestDetached() {
|
||||
content::WebContents* web_contents = guest_->web_contents();
|
||||
DCHECK(web_contents);
|
||||
|
||||
auto owner_browser =
|
||||
CefBrowserHostBase::GetBrowserForContents(owner_web_contents_);
|
||||
DCHECK(owner_browser);
|
||||
|
||||
// Disassociate guest state information with the owner browser.
|
||||
owner_browser->browser_info()->RemoveFrame(web_contents->GetMainFrame());
|
||||
}
|
||||
|
||||
} // namespace extensions
|
@@ -0,0 +1,37 @@
|
||||
// Copyright 2015 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright 2014 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_CHROME_EXTENSIONS_CHROME_MIME_HANDLER_VIEW_GUEST_DELEGATE_CEF_H_
|
||||
#define CEF_LIBCEF_BROWSER_CHROME_EXTENSIONS_CHROME_MIME_HANDLER_VIEW_GUEST_DELEGATE_CEF_H_
|
||||
|
||||
#include "chrome/browser/guest_view/mime_handler_view/chrome_mime_handler_view_guest_delegate.h"
|
||||
#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
|
||||
|
||||
namespace extensions {
|
||||
|
||||
class ChromeMimeHandlerViewGuestDelegateCef
|
||||
: public ChromeMimeHandlerViewGuestDelegate {
|
||||
public:
|
||||
explicit ChromeMimeHandlerViewGuestDelegateCef(MimeHandlerViewGuest* guest);
|
||||
|
||||
ChromeMimeHandlerViewGuestDelegateCef(
|
||||
const ChromeMimeHandlerViewGuestDelegateCef&) = delete;
|
||||
ChromeMimeHandlerViewGuestDelegateCef& operator=(
|
||||
const ChromeMimeHandlerViewGuestDelegateCef&) = delete;
|
||||
|
||||
~ChromeMimeHandlerViewGuestDelegateCef() override;
|
||||
|
||||
// MimeHandlerViewGuestDelegate methods.
|
||||
void OnGuestAttached() override;
|
||||
void OnGuestDetached() override;
|
||||
|
||||
private:
|
||||
MimeHandlerViewGuest* guest_; // Owns us.
|
||||
content::WebContents* owner_web_contents_;
|
||||
};
|
||||
|
||||
} // namespace extensions
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_CHROME_EXTENSIONS_CHROME_MIME_HANDLER_VIEW_GUEST_DELEGATE_CEF_H_
|
Reference in New Issue
Block a user