Prevent creating popup window from inside WebContents
This commit is contained in:
parent
cf4c2d02f3
commit
fb864a8f23
3 changed files with 32 additions and 0 deletions
|
@ -423,6 +423,22 @@ void NativeWindow::NotifyWindowFocus() {
|
||||||
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowFocus());
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowFocus());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NativeWindow::ShouldCreateWebContents(
|
||||||
|
content::WebContents* web_contents,
|
||||||
|
int route_id,
|
||||||
|
WindowContainerType window_container_type,
|
||||||
|
const base::string16& frame_name,
|
||||||
|
const GURL& target_url,
|
||||||
|
const std::string& partition_id,
|
||||||
|
content::SessionStorageNamespace* session_storage_namespace) {
|
||||||
|
FOR_EACH_OBSERVER(NativeWindowObserver,
|
||||||
|
observers_,
|
||||||
|
WillCreatePopupWindow(frame_name,
|
||||||
|
target_url,
|
||||||
|
partition_id));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// In atom-shell all reloads and navigations started by renderer process would
|
// In atom-shell all reloads and navigations started by renderer process would
|
||||||
// be redirected to this method, so we can have precise control of how we
|
// be redirected to this method, so we can have precise control of how we
|
||||||
// would open the url (in our case, is to restart the renderer process). See
|
// would open the url (in our case, is to restart the renderer process). See
|
||||||
|
|
|
@ -214,6 +214,14 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate,
|
||||||
const std::vector<DraggableRegion>& regions) = 0;
|
const std::vector<DraggableRegion>& regions) = 0;
|
||||||
|
|
||||||
// Implementations of content::WebContentsDelegate.
|
// Implementations of content::WebContentsDelegate.
|
||||||
|
bool ShouldCreateWebContents(
|
||||||
|
content::WebContents* web_contents,
|
||||||
|
int route_id,
|
||||||
|
WindowContainerType window_container_type,
|
||||||
|
const base::string16& frame_name,
|
||||||
|
const GURL& target_url,
|
||||||
|
const std::string& partition_id,
|
||||||
|
content::SessionStorageNamespace* session_storage_namespace) override;
|
||||||
content::WebContents* OpenURLFromTab(
|
content::WebContents* OpenURLFromTab(
|
||||||
content::WebContents* source,
|
content::WebContents* source,
|
||||||
const content::OpenURLParams& params) override;
|
const content::OpenURLParams& params) override;
|
||||||
|
|
|
@ -7,6 +7,9 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "base/strings/string16.h"
|
||||||
|
#include "url/gurl.h"
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
class NativeWindowObserver {
|
class NativeWindowObserver {
|
||||||
|
@ -17,6 +20,11 @@ class NativeWindowObserver {
|
||||||
virtual void OnPageTitleUpdated(bool* prevent_default,
|
virtual void OnPageTitleUpdated(bool* prevent_default,
|
||||||
const std::string& title) {}
|
const std::string& title) {}
|
||||||
|
|
||||||
|
// Called when the web page in window wants to create a popup window.
|
||||||
|
virtual void WillCreatePopupWindow(const base::string16& frame_name,
|
||||||
|
const GURL& target_url,
|
||||||
|
const std::string& partition_id) {}
|
||||||
|
|
||||||
// Called when the window is gonna closed.
|
// Called when the window is gonna closed.
|
||||||
virtual void WillCloseWindow(bool* prevent_default) {}
|
virtual void WillCloseWindow(bool* prevent_default) {}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue