mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-06 23:37:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
135
dom/browser-element/BrowserElementParent.h
Normal file
135
dom/browser-element/BrowserElementParent.h
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef mozilla_BrowserElementHelpers_h
|
||||
#define mozilla_BrowserElementHelpers_h
|
||||
|
||||
#include "nsAString.h"
|
||||
#include "mozilla/gfx/Point.h"
|
||||
#include "mozilla/gfx/Rect.h"
|
||||
#include "Units.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
|
||||
class nsIDOMWindow;
|
||||
class nsIURI;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
namespace dom {
|
||||
class TabParent;
|
||||
} // namespace dom
|
||||
|
||||
namespace layers {
|
||||
struct TextureFactoryIdentifier;
|
||||
} // namespace layers
|
||||
|
||||
namespace layout {
|
||||
class PRenderFrameParent;
|
||||
} // namespace layout
|
||||
|
||||
/**
|
||||
* BrowserElementParent implements a portion of the parent-process side of
|
||||
* <iframe mozbrowser>.
|
||||
*
|
||||
* Most of the parent-process side of <iframe mozbrowser> is implemented in
|
||||
* BrowserElementParent.js. This file implements the few parts of this
|
||||
* functionality which must be written in C++.
|
||||
*
|
||||
* We don't communicate with the JS code that lives in BrowserElementParent.js;
|
||||
* the JS and C++ parts are completely separate.
|
||||
*/
|
||||
class BrowserElementParent
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Possible results from a window.open call.
|
||||
* ADDED - The frame was added to a document (i.e. handled by the embedder).
|
||||
* IGNORED - The frame was not added to a document and the embedder didn't
|
||||
* call preventDefault() to prevent the platform from handling the call.
|
||||
* CANCELLED - The frame was not added to a document, but the embedder still
|
||||
* called preventDefault() to prevent the platform from handling the call.
|
||||
*/
|
||||
|
||||
enum OpenWindowResult {
|
||||
OPEN_WINDOW_ADDED,
|
||||
OPEN_WINDOW_IGNORED,
|
||||
OPEN_WINDOW_CANCELLED
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle a window.open call from an out-of-process <iframe mozbrowser>.
|
||||
*
|
||||
* window.open inside <iframe mozbrowser> doesn't actually open a new
|
||||
* top-level window. Instead, the "embedder" (the document which contains
|
||||
* the <iframe mozbrowser> whose content called window.open) gets the
|
||||
* opportunity to place a new <iframe mozbrowser> in the DOM somewhere. This
|
||||
* new "popup" iframe acts as the opened window.
|
||||
*
|
||||
* This method proceeds in three steps.
|
||||
*
|
||||
* 1) We fire a mozbrowseropenwindow CustomEvent on the opener
|
||||
* iframe element. This event's detail is an instance of
|
||||
* OpenWindowEventDetail.
|
||||
*
|
||||
* 2) The embedder (the document which contains the opener iframe) can accept
|
||||
* the window.open request by inserting event.detail.frameElement (an iframe
|
||||
* element) into the DOM somewhere.
|
||||
*
|
||||
* 3) If the embedder accepted the window.open request, we return true and
|
||||
* set aPopupTabParent's frame element to event.detail.frameElement.
|
||||
* Otherwise, we return false.
|
||||
*
|
||||
* @param aURL the URL the new window should load. The empty string is
|
||||
* allowed.
|
||||
* @param aOpenerTabParent the TabParent whose TabChild called window.open.
|
||||
* @param aPopupTabParent the TabParent inside which the opened window will
|
||||
* live.
|
||||
* @return an OpenWindowresult that describes whether the embedder added the
|
||||
* frame to a document and whether it called preventDefault to prevent
|
||||
* the platform from handling the open request.
|
||||
*/
|
||||
static OpenWindowResult
|
||||
OpenWindowOOP(dom::TabParent* aOpenerTabParent,
|
||||
dom::TabParent* aPopupTabParent,
|
||||
layout::PRenderFrameParent* aRenderFrame,
|
||||
const nsAString& aURL,
|
||||
const nsAString& aName,
|
||||
const nsAString& aFeatures,
|
||||
layers::TextureFactoryIdentifier* aTextureFactoryIdentifier,
|
||||
uint64_t* aLayersId);
|
||||
|
||||
/**
|
||||
* Handle a window.open call from an in-process <iframe mozbrowser>.
|
||||
*
|
||||
* (These parameter types are silly, but they match what our caller has in
|
||||
* hand. Feel free to add an override, if they are inconvenient to you.)
|
||||
*
|
||||
* @param aURI the URI the new window should load. May be null.
|
||||
* @return an OpenWindowResult that describes whether the browser added the
|
||||
* frame to a document or whether they called preventDefault to prevent
|
||||
* the platform from handling the open request
|
||||
*/
|
||||
static OpenWindowResult
|
||||
OpenWindowInProcess(nsPIDOMWindowOuter* aOpenerWindow,
|
||||
nsIURI* aURI,
|
||||
const nsAString& aName,
|
||||
const nsACString& aFeatures,
|
||||
bool aForceNoOpener,
|
||||
mozIDOMWindowProxy** aReturnWindow);
|
||||
|
||||
private:
|
||||
static OpenWindowResult
|
||||
DispatchOpenWindowEvent(dom::Element* aOpenerFrameElement,
|
||||
dom::Element* aPopupFrameElement,
|
||||
const nsAString& aURL,
|
||||
const nsAString& aName,
|
||||
const nsAString& aFeatures);
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue