merge mozilla-inbound to mozilla-central a=merge
--HG-- rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/css/ot.min.css => browser/components/loop/content/libs/sdk-content/css/ot.css rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-denied-chrome.png => browser/components/loop/content/libs/sdk-content/images/rtc/access-denied-chrome.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-denied-copy-firefox.png => browser/components/loop/content/libs/sdk-content/images/rtc/access-denied-copy-firefox.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-denied-firefox.png => browser/components/loop/content/libs/sdk-content/images/rtc/access-denied-firefox.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-predenied-chrome.png => browser/components/loop/content/libs/sdk-content/images/rtc/access-predenied-chrome.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-prompt-chrome.png => browser/components/loop/content/libs/sdk-content/images/rtc/access-prompt-chrome.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/audioonly-publisher.png => browser/components/loop/content/libs/sdk-content/images/rtc/audioonly-publisher.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/audioonly-subscriber.png => browser/components/loop/content/libs/sdk-content/images/rtc/audioonly-subscriber.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/buttons.png => browser/components/loop/content/libs/sdk-content/images/rtc/buttons.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/loader.gif => browser/components/loop/content/libs/sdk-content/images/rtc/loader.gif rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/mic-off.png => browser/components/loop/content/libs/sdk-content/images/rtc/mic-off.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/mic-on.png => browser/components/loop/content/libs/sdk-content/images/rtc/mic-on.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/speaker-off.png => browser/components/loop/content/libs/sdk-content/images/rtc/speaker-off.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/images/rtc/speaker-on.png => browser/components/loop/content/libs/sdk-content/images/rtc/speaker-on.png rename : browser/components/loop/content/libs/otcdn/webrtc/v2.2.5/js/dynamic_config.min.js => browser/components/loop/content/libs/sdk-content/js/dynamic_config.min.js
|
@ -51,8 +51,10 @@ public:
|
|||
typedef mozilla::a11y::Accessible Accessible;
|
||||
typedef mozilla::a11y::DocAccessible DocAccessible;
|
||||
|
||||
protected:
|
||||
virtual ~nsAccessibilityService();
|
||||
|
||||
public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIACCESSIBLERETRIEVAL
|
||||
NS_DECL_NSIOBSERVER
|
||||
|
|
|
@ -59,6 +59,7 @@ public:
|
|||
virtual Accessible* AsAccessible() { return this; }
|
||||
|
||||
protected:
|
||||
virtual ~ARIAGridAccessible() {}
|
||||
|
||||
/**
|
||||
* Return true if the given row index is valid.
|
||||
|
@ -117,6 +118,7 @@ public:
|
|||
virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~ARIAGridCellAccessible() {}
|
||||
|
||||
/**
|
||||
* Return a containing row.
|
||||
|
|
|
@ -81,6 +81,7 @@ public:
|
|||
virtual KeyBinding AccessKey() const;
|
||||
|
||||
protected:
|
||||
virtual ~ApplicationAccessible() {}
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
|
|
|
@ -39,6 +39,7 @@ public:
|
|||
virtual bool RemoveChild(Accessible* aChild) MOZ_OVERRIDE MOZ_FINAL;
|
||||
|
||||
protected:
|
||||
virtual ~LeafAccessible() {}
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
|
@ -77,6 +78,8 @@ public:
|
|||
virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
|
||||
|
||||
protected:
|
||||
virtual ~LinkableAccessible() {}
|
||||
|
||||
// Accessible
|
||||
virtual void BindToParent(Accessible* aParent, uint32_t aIndexInParent);
|
||||
virtual void UnbindFromParent();
|
||||
|
@ -97,7 +100,6 @@ class EnumRoleAccessible : public AccessibleWrap
|
|||
public:
|
||||
EnumRoleAccessible(nsIContent* aContent, DocAccessible* aDoc,
|
||||
a11y::role aRole);
|
||||
virtual ~EnumRoleAccessible() { }
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -105,6 +107,8 @@ public:
|
|||
virtual a11y::role NativeRole();
|
||||
|
||||
protected:
|
||||
virtual ~EnumRoleAccessible() { }
|
||||
|
||||
a11y::role mRole;
|
||||
};
|
||||
|
||||
|
|
|
@ -58,7 +58,6 @@ public:
|
|||
|
||||
DocAccessible(nsIDocument* aDocument, nsIContent* aRootContent,
|
||||
nsIPresShell* aPresShell);
|
||||
virtual ~DocAccessible();
|
||||
|
||||
// nsIAccessible
|
||||
NS_IMETHOD TakeFocus(void);
|
||||
|
@ -311,6 +310,7 @@ public:
|
|||
void RecreateAccessible(nsIContent* aContent);
|
||||
|
||||
protected:
|
||||
virtual ~DocAccessible();
|
||||
|
||||
void LastRelease();
|
||||
|
||||
|
|
|
@ -43,6 +43,9 @@ public:
|
|||
|
||||
// Widgets
|
||||
virtual bool IsWidget() const;
|
||||
|
||||
protected:
|
||||
virtual ~ProgressMeterAccessible() {}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -40,7 +40,6 @@ class HyperTextAccessible : public AccessibleWrap,
|
|||
{
|
||||
public:
|
||||
HyperTextAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~HyperTextAccessible() { }
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -416,6 +415,8 @@ public:
|
|||
dom::Selection* DOMSelection() const;
|
||||
|
||||
protected:
|
||||
virtual ~HyperTextAccessible() { }
|
||||
|
||||
// Accessible
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
virtual void CacheChildren() MOZ_OVERRIDE;
|
||||
|
|
|
@ -35,6 +35,10 @@ ImageAccessible::
|
|||
mType = eImageType;
|
||||
}
|
||||
|
||||
ImageAccessible::~ImageAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(ImageAccessible, Accessible,
|
||||
nsIAccessibleImage)
|
||||
|
||||
|
|
|
@ -44,6 +44,8 @@ public:
|
|||
virtual uint8_t ActionCount();
|
||||
|
||||
protected:
|
||||
virtual ~ImageAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ class OuterDocAccessible : public AccessibleWrap
|
|||
{
|
||||
public:
|
||||
OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~OuterDocAccessible();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -47,6 +46,8 @@ public:
|
|||
virtual uint8_t ActionCount();
|
||||
|
||||
protected:
|
||||
virtual ~OuterDocAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
};
|
||||
|
|
|
@ -24,7 +24,6 @@ class RootAccessible : public DocAccessibleWrap,
|
|||
public:
|
||||
RootAccessible(nsIDocument* aDocument, nsIContent* aRootContent,
|
||||
nsIPresShell* aPresShell);
|
||||
virtual ~RootAccessible();
|
||||
|
||||
// nsIDOMEventListener
|
||||
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
|
||||
|
@ -44,6 +43,7 @@ public:
|
|||
virtual void DocumentActivated(DocAccessible* aDocument);
|
||||
|
||||
protected:
|
||||
virtual ~RootAccessible();
|
||||
|
||||
/**
|
||||
* Add/remove DOM event listeners.
|
||||
|
|
|
@ -18,13 +18,15 @@ class HTMLCanvasAccessible : public HyperTextAccessibleWrap
|
|||
{
|
||||
public:
|
||||
HTMLCanvasAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~HTMLCanvasAccessible() { }
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// Accessible
|
||||
virtual a11y::role NativeRole();
|
||||
|
||||
protected:
|
||||
virtual ~HTMLCanvasAccessible() { }
|
||||
};
|
||||
|
||||
} // namespace a11y
|
||||
|
|
|
@ -64,6 +64,7 @@ public:
|
|||
virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLLabelAccessible() {}
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
};
|
||||
|
||||
|
@ -83,6 +84,9 @@ public:
|
|||
virtual a11y::role NativeRole();
|
||||
virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
|
||||
virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLOutputAccessible() {}
|
||||
};
|
||||
|
||||
} // namespace a11y
|
||||
|
|
|
@ -141,6 +141,8 @@ public:
|
|||
virtual Accessible* ContainerWidget() const;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLTextFieldAccessible() {}
|
||||
|
||||
// Accessible
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ class HTMLImageMapAccessible : public ImageAccessibleWrap
|
|||
{
|
||||
public:
|
||||
HTMLImageMapAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~HTMLImageMapAccessible() { }
|
||||
|
||||
// nsISupports and cycle collector
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -44,6 +43,7 @@ public:
|
|||
Accessible* GetChildAccessibleFor(const nsINode* aNode) const;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLImageMapAccessible() { }
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
|
|
|
@ -37,6 +37,8 @@ public:
|
|||
virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
|
||||
|
||||
protected:
|
||||
virtual ~HTMLLinkAccessible() {}
|
||||
|
||||
enum { eAction_Jump = 0 };
|
||||
|
||||
/**
|
||||
|
|
|
@ -23,7 +23,6 @@ class HTMLListAccessible : public HyperTextAccessibleWrap
|
|||
public:
|
||||
HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; }
|
||||
virtual ~HTMLListAccessible() { }
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -31,6 +30,9 @@ public:
|
|||
// Accessible
|
||||
virtual a11y::role NativeRole();
|
||||
virtual uint64_t NativeState();
|
||||
|
||||
protected:
|
||||
virtual ~HTMLListAccessible() { }
|
||||
};
|
||||
|
||||
|
||||
|
@ -41,7 +43,6 @@ class HTMLLIAccessible : public HyperTextAccessibleWrap
|
|||
{
|
||||
public:
|
||||
HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~HTMLLIAccessible() { }
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -60,6 +61,8 @@ public:
|
|||
void UpdateBullet(bool aHasBullet);
|
||||
|
||||
protected:
|
||||
virtual ~HTMLLIAccessible() { }
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
|
||||
|
|
|
@ -55,6 +55,8 @@ public:
|
|||
virtual bool Selected() MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLTableCellAccessible() {}
|
||||
|
||||
/**
|
||||
* Return host table accessible.
|
||||
*/
|
||||
|
@ -97,12 +99,14 @@ public:
|
|||
mType = eHTMLTableRowType;
|
||||
mGenericTypes |= eTableRow;
|
||||
}
|
||||
virtual ~HTMLTableRowAccessible() { }
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// Accessible
|
||||
virtual a11y::role NativeRole();
|
||||
|
||||
protected:
|
||||
virtual ~HTMLTableRowAccessible() { }
|
||||
};
|
||||
|
||||
|
||||
|
@ -173,6 +177,8 @@ public:
|
|||
virtual Relation RelationByType(RelationType aRelationType) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLTableAccessible() {}
|
||||
|
||||
// Accessible
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
virtual void CacheChildren();
|
||||
|
|
|
@ -21,6 +21,10 @@ XULAlertAccessible::
|
|||
{
|
||||
}
|
||||
|
||||
XULAlertAccessible::~XULAlertAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED0(XULAlertAccessible, Accessible)
|
||||
|
||||
role
|
||||
|
|
|
@ -30,6 +30,9 @@ public:
|
|||
// Widgets
|
||||
virtual bool IsWidget() const;
|
||||
virtual Accessible* ContainerWidget() const;
|
||||
|
||||
protected:
|
||||
~XULAlertAccessible();
|
||||
};
|
||||
|
||||
} // namespace a11y
|
||||
|
|
|
@ -184,6 +184,10 @@ XULLinkAccessible::
|
|||
{
|
||||
}
|
||||
|
||||
XULLinkAccessible::~XULLinkAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
// Expose nsIAccessibleHyperLink unconditionally
|
||||
NS_IMPL_ISUPPORTS_INHERITED(XULLinkAccessible, XULLabelAccessible,
|
||||
nsIAccessibleHyperLink)
|
||||
|
|
|
@ -106,6 +106,8 @@ public:
|
|||
virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
|
||||
|
||||
protected:
|
||||
virtual ~XULLinkAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
|
||||
|
|
|
@ -47,6 +47,10 @@ XULButtonAccessible::
|
|||
}
|
||||
}
|
||||
|
||||
XULButtonAccessible::~XULButtonAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULButtonAccessible: nsISupports
|
||||
|
||||
|
|
|
@ -55,6 +55,8 @@ public:
|
|||
virtual bool IsAcceptableChild(Accessible* aPossibleChild) const MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~XULButtonAccessible();
|
||||
|
||||
// XULButtonAccessible
|
||||
bool ContainsMenu();
|
||||
};
|
||||
|
|
|
@ -586,6 +586,10 @@ XULListitemAccessible::
|
|||
mType = eXULListItemType;
|
||||
}
|
||||
|
||||
XULListitemAccessible::~XULListitemAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED0(XULListitemAccessible, Accessible)
|
||||
|
||||
Accessible*
|
||||
|
|
|
@ -67,7 +67,6 @@ class XULListboxAccessible : public XULSelectControlAccessible,
|
|||
{
|
||||
public:
|
||||
XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~XULListboxAccessible() {}
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -107,6 +106,8 @@ public:
|
|||
virtual Accessible* ContainerWidget() const;
|
||||
|
||||
protected:
|
||||
virtual ~XULListboxAccessible() {}
|
||||
|
||||
bool IsMulticolumn();
|
||||
};
|
||||
|
||||
|
@ -121,7 +122,6 @@ public:
|
|||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
virtual ~XULListitemAccessible() {}
|
||||
|
||||
// nsIAccessible
|
||||
NS_IMETHOD GetActionName(uint8_t index, nsAString& aName);
|
||||
|
@ -138,6 +138,8 @@ public:
|
|||
virtual Accessible* ContainerWidget() const;
|
||||
|
||||
protected:
|
||||
virtual ~XULListitemAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -181,6 +183,9 @@ public:
|
|||
virtual uint32_t RowIdx() const MOZ_OVERRIDE;
|
||||
virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) MOZ_OVERRIDE;
|
||||
virtual bool Selected() MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~XULListCellAccessible() {}
|
||||
};
|
||||
|
||||
} // namespace a11y
|
||||
|
|
|
@ -62,6 +62,10 @@ XULTreeAccessible::
|
|||
}
|
||||
}
|
||||
|
||||
XULTreeAccessible::~XULTreeAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeAccessible: nsISupports and cycle collection implementation
|
||||
|
||||
|
@ -703,6 +707,10 @@ XULTreeItemAccessibleBase::
|
|||
mStateFlags |= eSharedNode;
|
||||
}
|
||||
|
||||
XULTreeItemAccessibleBase::~XULTreeItemAccessibleBase()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeItemAccessibleBase: nsISupports implementation
|
||||
|
||||
|
@ -1103,6 +1111,10 @@ XULTreeItemAccessible::
|
|||
GetCellName(mColumn, mCachedName);
|
||||
}
|
||||
|
||||
XULTreeItemAccessible::~XULTreeItemAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeItemAccessible: nsISupports implementation
|
||||
|
||||
|
|
|
@ -107,6 +107,8 @@ public:
|
|||
void TreeViewChanged(nsITreeView* aView);
|
||||
|
||||
protected:
|
||||
virtual ~XULTreeAccessible();
|
||||
|
||||
/**
|
||||
* Creates tree item accessible for the given row index.
|
||||
*/
|
||||
|
@ -190,6 +192,8 @@ public:
|
|||
virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx) = 0;
|
||||
|
||||
protected:
|
||||
virtual ~XULTreeItemAccessibleBase();
|
||||
|
||||
enum { eAction_Click = 0, eAction_Expand = 1 };
|
||||
|
||||
// Accessible
|
||||
|
@ -242,6 +246,7 @@ public:
|
|||
virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx);
|
||||
|
||||
protected:
|
||||
virtual ~XULTreeItemAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
XULTreeGridAccessible::~XULTreeGridAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeGridAccessible: nsISupports implementation
|
||||
|
||||
|
@ -262,6 +266,10 @@ XULTreeGridRowAccessible::
|
|||
mGenericTypes |= eTableRow;
|
||||
}
|
||||
|
||||
XULTreeGridRowAccessible::~XULTreeGridRowAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeGridRowAccessible: nsISupports and cycle collection implementation
|
||||
|
||||
|
@ -450,6 +458,10 @@ XULTreeGridCellAccessible::
|
|||
mTreeView->GetCellText(mRow, mColumn, mCachedTextEquiv);
|
||||
}
|
||||
|
||||
XULTreeGridCellAccessible::~XULTreeGridCellAccessible()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeGridCellAccessible: nsISupports implementation
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ public:
|
|||
virtual a11y::role NativeRole();
|
||||
|
||||
protected:
|
||||
virtual ~XULTreeGridAccessible();
|
||||
|
||||
// XULTreeAccessible
|
||||
virtual already_AddRefed<Accessible>
|
||||
|
@ -100,6 +101,7 @@ public:
|
|||
virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx);
|
||||
|
||||
protected:
|
||||
virtual ~XULTreeGridRowAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual void CacheChildren();
|
||||
|
@ -184,6 +186,8 @@ public:
|
|||
bool CellInvalidated();
|
||||
|
||||
protected:
|
||||
virtual ~XULTreeGridCellAccessible();
|
||||
|
||||
// Accessible
|
||||
virtual Accessible* GetSiblingAtOffset(int32_t aOffset,
|
||||
nsresult* aError = nullptr) const;
|
||||
|
|
|
@ -2632,24 +2632,14 @@ function BrowserReloadWithFlags(reloadFlags) {
|
|||
return;
|
||||
}
|
||||
|
||||
/* First, we'll try to use the session history object to reload so
|
||||
* that framesets are handled properly. If we're in a special
|
||||
* window (such as view-source) that has no session history, fall
|
||||
* back on using the web navigation's reload method.
|
||||
*/
|
||||
let windowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
|
||||
var webNav = gBrowser.webNavigation;
|
||||
try {
|
||||
var sh = webNav.sessionHistory;
|
||||
if (sh)
|
||||
webNav = sh.QueryInterface(nsIWebNavigation);
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
try {
|
||||
webNav.reload(reloadFlags);
|
||||
} catch (e) {
|
||||
}
|
||||
gBrowser.selectedBrowser
|
||||
.messageManager
|
||||
.sendAsyncMessage("Browser:Reload",
|
||||
{ flags: reloadFlags,
|
||||
handlingUserInput: windowUtils.isHandlingUserInput });
|
||||
}
|
||||
|
||||
var PrintPreviewListener = {
|
||||
|
|
|
@ -34,6 +34,34 @@ addMessageListener("Browser:HideSessionRestoreButton", function (message) {
|
|||
}
|
||||
});
|
||||
|
||||
addMessageListener("Browser:Reload", function(message) {
|
||||
/* First, we'll try to use the session history object to reload so
|
||||
* that framesets are handled properly. If we're in a special
|
||||
* window (such as view-source) that has no session history, fall
|
||||
* back on using the web navigation's reload method.
|
||||
*/
|
||||
|
||||
let webNav = docShell.QueryInterface(Ci.nsIWebNavigation);
|
||||
try {
|
||||
let sh = webNav.sessionHistory;
|
||||
if (sh)
|
||||
webNav = sh.QueryInterface(Ci.nsIWebNavigation);
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
let reloadFlags = message.data.flags;
|
||||
let handlingUserInput;
|
||||
try {
|
||||
handlingUserInput = content.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils)
|
||||
.setHandlingUserInput(message.data.handlingUserInput);
|
||||
webNav.reload(reloadFlags);
|
||||
} catch (e) {
|
||||
} finally {
|
||||
handlingUserInput.destruct();
|
||||
}
|
||||
});
|
||||
|
||||
addEventListener("DOMFormHasPassword", function(event) {
|
||||
InsecurePasswordUtils.checkForInsecurePasswords(event.target);
|
||||
LoginManagerContent.onFormPassword(event);
|
||||
|
|
|
@ -173,7 +173,13 @@ function MixedTest6B() {
|
|||
|
||||
function MixedTest6C() {
|
||||
gTestBrowser.removeEventListener("load", MixedTest6C, true);
|
||||
waitForCondition(function() content.document.getElementById('f1').contentDocument.getElementById('p1').innerHTML == "hello", MixedTest6D, "Waited too long for mixed script to run in Test 6");
|
||||
waitForCondition(function() {
|
||||
try {
|
||||
return content.document.getElementById('f1').contentDocument.getElementById('p1').innerHTML == "hello";
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}, MixedTest6D, "Waited too long for mixed script to run in Test 6");
|
||||
}
|
||||
function MixedTest6D() {
|
||||
ok(content.document.getElementById('f1').contentDocument.getElementById('p1').innerHTML == "hello","Mixed script didn't load in Test 6");
|
||||
|
|
|
@ -14,7 +14,7 @@ const kWhitelist = [
|
|||
{sourceName: /codemirror\.css/i}, /* CodeMirror is imported as-is, see bug 1004423 */
|
||||
{sourceName: /web\/viewer\.css/i, errorMessage: /Unknown pseudo-class.*(fullscreen|selection)/i }, /* PDFjs is futureproofing its pseudoselectors, and those rules are dropped. */
|
||||
{sourceName: /aboutaccounts\/(main|normalize)\.css/i}, /* Tracked in bug 1004428 */
|
||||
{sourceName: /otcdn\/webrtc\/.*\.css$/i /* TokBox SDK assets, see bug 1003029 */}
|
||||
{sourceName: /loop\/.*sdk-content\/.*\.css$/i /* TokBox SDK assets, see bug 1032469 */}
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,6 +17,14 @@
|
|||
<div id="main"></div>
|
||||
|
||||
<script type="text/javascript" src="loop/libs/l10n.js"></script>
|
||||
<script>
|
||||
window.OTProperties = {
|
||||
cdnURL: 'loop/',
|
||||
};
|
||||
window.OTProperties.assetURL = window.OTProperties.cdnURL + 'sdk-content/';
|
||||
window.OTProperties.configURL = window.OTProperties.assetURL + 'js/dynamic_config.min.js';
|
||||
window.OTProperties.cssURL = window.OTProperties.assetURL + 'css/ot.css';
|
||||
</script>
|
||||
<script type="text/javascript" src="loop/libs/sdk.js"></script>
|
||||
<script type="text/javascript" src="loop/shared/libs/jquery-2.1.0.js"></script>
|
||||
<script type="text/javascript" src="loop/shared/libs/lodash-2.4.1.js"></script>
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
/**
|
||||
* @license OpenTok JavaScript Library v2.2.5
|
||||
* http://www.tokbox.com/
|
||||
*
|
||||
* Copyright (c) 2014 TokBox, Inc.
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
* Date: May 22 07:14:18 2014
|
||||
*/
|
||||
|
||||
!(function() {
|
||||
TB.Config.replaceWith({
|
||||
global: {
|
||||
exceptionLogging: {
|
||||
enabled: true,
|
||||
messageLimitPerPartner: 100
|
||||
},
|
||||
|
||||
iceServers: {
|
||||
enabled: false
|
||||
},
|
||||
},
|
||||
|
||||
partners: {
|
||||
}
|
||||
});
|
||||
})(TB);
|
|
@ -0,0 +1,973 @@
|
|||
/*!
|
||||
* Copyright (c) 2014 TokBox, Inc.
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
/**
|
||||
* OT Base styles
|
||||
*/
|
||||
|
||||
/* Root OT object, this is where our CSS reset happens */
|
||||
.OT_root,
|
||||
.OT_root * {
|
||||
color: #ffffff;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Specific Element Reset
|
||||
*/
|
||||
|
||||
.OT_root h1,
|
||||
.OT_root h2,
|
||||
.OT_root h3,
|
||||
.OT_root h4,
|
||||
.OT_root h5,
|
||||
.OT_root h6 {
|
||||
color: #ffffff;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.OT_root header {
|
||||
|
||||
}
|
||||
|
||||
.OT_root footer {
|
||||
|
||||
}
|
||||
|
||||
.OT_root div {
|
||||
|
||||
}
|
||||
|
||||
.OT_root section {
|
||||
|
||||
}
|
||||
|
||||
.OT_root video {
|
||||
|
||||
}
|
||||
|
||||
.OT_root button {
|
||||
|
||||
}
|
||||
|
||||
.OT_root strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.OT_root em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.OT_root a,
|
||||
.OT_root a:link,
|
||||
.OT_root a:visited,
|
||||
.OT_root a:hover,
|
||||
.OT_root a:active {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
.OT_root ul, .OT_root ol {
|
||||
margin: 1em 1em 1em 2em;
|
||||
}
|
||||
|
||||
.OT_root ol {
|
||||
list-style: decimal outside;
|
||||
}
|
||||
|
||||
.OT_root ul {
|
||||
list-style: disc outside;
|
||||
}
|
||||
|
||||
.OT_root dl {
|
||||
margin: 4px;
|
||||
}
|
||||
.OT_root dl dt,
|
||||
.OT_root dl dd {
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.OT_root dl dt {
|
||||
clear: left;
|
||||
text-align: right;
|
||||
width: 50px;
|
||||
}
|
||||
.OT_root dl dd {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.OT_root img {
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
|
||||
/* Modal dialog styles */
|
||||
|
||||
/* Modal dialog styles */
|
||||
|
||||
.OT_dialog {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
position: fixed;
|
||||
padding: 0;
|
||||
background-color: #363636;
|
||||
color: #fff;
|
||||
z-index: 9999;
|
||||
box-shadow: 2px 4px 6px #999;
|
||||
font-family: 'Didact Gothic', sans-serif;
|
||||
}
|
||||
|
||||
.OT_dialog-blackout {
|
||||
position: absolute;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #363636;
|
||||
}
|
||||
|
||||
.OT_dialog-blackout .OT_dialog {
|
||||
box-shadow: 0 0 0 transparent;
|
||||
}
|
||||
|
||||
.OT_dialog * {
|
||||
font-family: 'Didact Gothic', sans-serif;
|
||||
}
|
||||
|
||||
.OT_dialog-plugin-prompt {
|
||||
margin-left: -350px;
|
||||
margin-top: -141px;
|
||||
width: 650px;
|
||||
height: 282px;
|
||||
}
|
||||
|
||||
.OT_dialog-plugin-reinstall {
|
||||
margin-left: -271px;
|
||||
margin-top: -117px;
|
||||
width: 542px;
|
||||
height: 234px;
|
||||
}
|
||||
|
||||
.OT_dialog-plugin-upgrading {
|
||||
margin-left: -267px;
|
||||
margin-top: -94px;
|
||||
width: 514px;
|
||||
height: 188px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-chrome-first {
|
||||
margin-left: -227px;
|
||||
margin-top: -122px;
|
||||
width: 453px;
|
||||
height: 244px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-chrome-pre-denied {
|
||||
margin-left: -263px;
|
||||
margin-top: -135px;
|
||||
width: 526px;
|
||||
height: 270px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-chrome-now-denied {
|
||||
margin-left: -120px;
|
||||
margin-top: -85px;
|
||||
width: 256px;
|
||||
height: 170px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-firefox-denied {
|
||||
margin-left: -160px;
|
||||
margin-top: -105px;
|
||||
width: 320px;
|
||||
height: 190px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-firefox-maybe-denied {
|
||||
margin-left: -281px;
|
||||
margin-top: -126px;
|
||||
width: 562px;
|
||||
height: 252px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-highlight-chrome {
|
||||
display: inline-block;
|
||||
margin-top: 20px;
|
||||
width: 227px;
|
||||
height: 94px;
|
||||
background-image: url(../images/rtc/access-prompt-chrome.png);
|
||||
}
|
||||
|
||||
.OT_closeButton {
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
position: absolute;
|
||||
font-size: 18px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.OT_dialog-messages {
|
||||
position: absolute;
|
||||
top: 32px;
|
||||
left: 32px;
|
||||
right: 32px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-firefox-maybe-denied .OT_dialog-messages {
|
||||
top: 45px;
|
||||
}
|
||||
|
||||
.OT_dialog-messages-main {
|
||||
font-weight: 300;
|
||||
font-size: 18pt;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.OT_dialog-messages-minor {
|
||||
font-weight: 300;
|
||||
margin-top: 12px;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
color: #A4A4A4;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-firefox-maybe-denied .OT_dialog-messages-minor {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.OT_dialog-messages-minor strong {
|
||||
font-weight: 300;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.OT_dialog-single-button {
|
||||
position: absolute;
|
||||
bottom: 41px;
|
||||
left: 50%;
|
||||
margin-left: -97px;
|
||||
height: 47px;
|
||||
width: 193px;
|
||||
}
|
||||
|
||||
.OT_dialog-button-pair {
|
||||
position: absolute;
|
||||
bottom: 45px;
|
||||
left: 5px;
|
||||
right: 0;
|
||||
height: 94px;
|
||||
}
|
||||
|
||||
.OT_dialog-button-with-title {
|
||||
padding-left: 30px;
|
||||
padding-right: 30px;
|
||||
width: 260px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.OT_dialog-button-pair-seperator {
|
||||
border-right: 1px solid #555555;
|
||||
height: 112px;
|
||||
width: 1px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.OT_dialog-button-title {
|
||||
font-weight: 300;
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
font-size: 12px;
|
||||
line-height: 150%;
|
||||
color: #A4A4A4;
|
||||
}
|
||||
|
||||
|
||||
.OT_dialog-button-title strong {
|
||||
color: #ffffff;
|
||||
font-weight: 100;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.OT_dialog-button {
|
||||
font-weight: 100;
|
||||
display: block;
|
||||
line-height: 50px;
|
||||
height: 47px;
|
||||
background-color: #29A4DA;
|
||||
text-align: center;
|
||||
font-size: 16pt;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.OT_dialog-button.OT_dialog-button-large {
|
||||
line-height: 60px;
|
||||
height: 58px;
|
||||
}
|
||||
|
||||
.OT_dialog-progress-bar {
|
||||
border: 1px solid #4E4E4E;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.OT_dialog-progress-bar-fill {
|
||||
background-color: #29A4DA;
|
||||
height: 10px;
|
||||
margin-top: -1px;
|
||||
margin-left: -1px;
|
||||
margin-right: -1px;
|
||||
}
|
||||
|
||||
.OT_dialog-plugin-upgrading .OT_dialog-plugin-upgrade-percentage {
|
||||
font-size: 36pt;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.OT_dialog-plugin-upgrading .OT_dialog-progress-bar {
|
||||
margin-top: 25px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.OT_dialog-3steps {
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-firefox-maybe-denied .OT_dialog-3steps {
|
||||
margin-top: 21px;
|
||||
}
|
||||
|
||||
.OT_dialog-3steps-step {
|
||||
float: left;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 33%;
|
||||
height: 140px;
|
||||
padding: 0 10px;
|
||||
color: #A4A4A4;
|
||||
}
|
||||
|
||||
.OT_dialog-3steps-seperator {
|
||||
float: left;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
margin-top: 10px;
|
||||
width: 1px;
|
||||
height: 68px;
|
||||
background-color: #555555;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-chrome-pre-denied .OT_dialog-3steps-seperator {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.OT_dialog-3steps-step-num {
|
||||
font-size: 20px;
|
||||
background-color: #2AA3D8;
|
||||
border-radius: 20px;
|
||||
line-height: 33px;
|
||||
height: 33px;
|
||||
width: 33px;
|
||||
margin: 0 auto 17px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-deny-chrome-pre-denied .OT_dialog-3steps-step-num {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.OT_dialog-allow-camera-icon {
|
||||
background-color: #000;
|
||||
width: 113px;
|
||||
height: 48px;
|
||||
margin: 10px auto 0;
|
||||
background-image: url(../images/rtc/access-predenied-chrome.png);
|
||||
}
|
||||
|
||||
/* Publisher Deny Helpers */
|
||||
|
||||
.OT_publisher-denied-firefox {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.OT_publisher-denied-firefox p {
|
||||
width: 232px;
|
||||
height: 103px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
display: block;
|
||||
position: absolute;
|
||||
margin-top: -52px;
|
||||
margin-left: -116px;
|
||||
background-image: url(../images/rtc/access-denied-firefox.png);
|
||||
background-position: 50% 0;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.OT_publisher-denied-firefox span {
|
||||
display: block;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
margin: 0 auto;
|
||||
width: 232px;
|
||||
height: 31px;
|
||||
background-image: url(../images/rtc/access-denied-copy-firefox.png);
|
||||
text-indent: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.OT_centered {
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Publisher and Subscriber styles */
|
||||
|
||||
.OT_publisher, .OT_subscriber {
|
||||
position: relative;
|
||||
min-width: 48px;
|
||||
min-height: 48px;
|
||||
}
|
||||
|
||||
.OT_publisher video,
|
||||
.OT_subscriber video {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* Styles that are applied when the video element should be mirrored */
|
||||
.OT_publisher.OT_mirrored video{
|
||||
-webkit-transform: scale(-1, 1);
|
||||
-moz-transform:scale(-1,1);
|
||||
}
|
||||
|
||||
.OT_subscriber_error {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.OT_subscriber_error > p {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
/* The publisher/subscriber name/mute background */
|
||||
.OT_publisher .OT_bar,
|
||||
.OT_subscriber .OT_bar,
|
||||
.OT_publisher .OT_name,
|
||||
.OT_subscriber .OT_name,
|
||||
.OT_publisher .OT_archiving,
|
||||
.OT_subscriber .OT_archiving,
|
||||
.OT_publisher .OT_archiving-status,
|
||||
.OT_subscriber .OT_archiving-status,
|
||||
.OT_publihser .OT_archiving-light-box,
|
||||
.OT_subscriber .OT_archiving-light-box {
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
height: 34px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_bar,
|
||||
.OT_subscriber .OT_bar {
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
/* The publisher/subscriber name panel/archiving status bar */
|
||||
.OT_publisher .OT_name,
|
||||
.OT_subscriber .OT_name {
|
||||
background-color: transparent;
|
||||
color: #ffffff;
|
||||
font-size: 15px;
|
||||
line-height: 34px;
|
||||
font-weight: normal;
|
||||
padding: 0 4px 0 36px;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_archiving-status,
|
||||
.OT_subscriber .OT_archiving-status {
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
left: 34px;
|
||||
padding: 0 4px;
|
||||
color: rgba(255,255,255,0.8);
|
||||
font-size: 15px;
|
||||
line-height: 34px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.OT_micro .OT_archiving-status,
|
||||
.OT_micro:hover .OT_archiving-status,
|
||||
.OT_mini .OT_archiving-status,
|
||||
.OT_mini:hover .OT_archiving-status {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_archiving-light-box,
|
||||
.OT_subscriber .OT_archiving-light-box {
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
right: auto;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
.OT_archiving-light {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
-webkit-border-radius: 30px;
|
||||
-moz-border-radius: 30px;
|
||||
border-radius: 30px;
|
||||
position: absolute;
|
||||
top: 14px;
|
||||
left: 14px;
|
||||
background-color: #575757;
|
||||
-webkit-box-shadow: 0 0 5px 1px #575757;
|
||||
-moz-box-shadow: 0 0 5px 1px #575757;
|
||||
box-shadow: 0 0 5px 1px #575757;
|
||||
}
|
||||
.OT_archiving-light.OT_active {
|
||||
background-color: #970d13;
|
||||
-webkit-animation: OT_pulse 1.3s ease-in;
|
||||
-moz-animation: OT_pulse 1.3s ease-in;
|
||||
-webkit-animation: OT_pulse 1.3s ease-in;
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
-moz-animation-iteration-count: infinite;
|
||||
-webkit-animation-iteration-count: infinite;
|
||||
}
|
||||
@-moz-keyframes OT_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
30% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
80% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes OT_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
30% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
80% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
}
|
||||
@-o-keyframes OT_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
30% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
80% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
}
|
||||
@-ms-keyframes OT_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
30% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
80% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes OT_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
30% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-box-shadow: 0 0 5px 1px #c70019;
|
||||
-moz-box-shadow: 0 0 5px 1px #c70019;
|
||||
box-shadow: 0 0 5px 1px #c70019;
|
||||
}
|
||||
|
||||
80% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0px 0px #c70019;
|
||||
-moz-box-shadow: 0 0 0px 0px #c70019;
|
||||
box-shadow: 0 0 0px 0px #c70019;
|
||||
}
|
||||
}
|
||||
|
||||
.OT_mini .OT_bar,
|
||||
.OT_bar.OT_mode-mini,
|
||||
.OT_bar.OT_mode-mini-auto {
|
||||
bottom: 0;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.OT_mini .OT_name.OT_mode-off,
|
||||
.OT_mini .OT_name.OT_mode-on,
|
||||
.OT_mini .OT_name.OT_mode-auto,
|
||||
.OT_mini:hover .OT_name.OT_mode-auto {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_name,
|
||||
.OT_subscriber .OT_name {
|
||||
left: 24px;
|
||||
right: 37px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_name-no-bug,
|
||||
.OT_subscriber .OT_name-no-bug {
|
||||
left: 10px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_mute,
|
||||
.OT_subscriber .OT_mute,
|
||||
.OT_publisher .OT_opentok,
|
||||
.OT_subscriber .OT_opentok {
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
text-indent: -9999em;
|
||||
background-color: transparent;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_opentok,
|
||||
.OT_subscriber .OT_opentok {
|
||||
background: url(../images/rtc/buttons.png) 0 -32px no-repeat;
|
||||
cursor: default;
|
||||
height: 18px;
|
||||
left: 8px;
|
||||
line-height: 18px;
|
||||
top: 8px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.OT_micro .OT_opentok {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_mute,
|
||||
.OT_subscriber .OT_mute {
|
||||
right: 0;
|
||||
top: 0;
|
||||
border-left: 1px solid rgba(255, 255, 255, 0.2);
|
||||
height: 36px;
|
||||
width: 37px;
|
||||
}
|
||||
|
||||
.OT_mini .OT_mute,
|
||||
.OT_mute.OT_mode-mini,
|
||||
.OT_mute.OT_mode-mini-auto {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
right: auto;
|
||||
margin-top: -18px;
|
||||
margin-left: -18.5px;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_mute {
|
||||
background-image: url(../images/rtc/mic-on.png);
|
||||
background-position: 9px 5px;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_mute.OT_active {
|
||||
background-image: url(../images/rtc/mic-off.png);
|
||||
background-position: 9px 4px;
|
||||
}
|
||||
|
||||
.OT_subscriber .OT_mute {
|
||||
background-image: url(../images/rtc/speaker-on.png);
|
||||
background-position: 8px 7px;
|
||||
}
|
||||
|
||||
.OT_subscriber .OT_mute.OT_active {
|
||||
background-image: url(../images/rtc/speaker-off.png);
|
||||
background-position: 7px 7px;
|
||||
}
|
||||
|
||||
/* Disabling this for now - see https://jira.tokbox.com/browse/OPENTOK-8870
|
||||
.OT_publisher .OT_opentok:hover:after,
|
||||
.OT_subscriber .OT_opentok:hover:after {
|
||||
content: 'tokbox';
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
letter-spacing: -1px;
|
||||
top: 20px;
|
||||
opacity: 0.5;
|
||||
position: absolute;
|
||||
text-indent: 0;
|
||||
top: 0;
|
||||
}*/
|
||||
|
||||
/**
|
||||
* Styles for display modes
|
||||
*
|
||||
* Note: It's important that these completely control the display and opacity
|
||||
* attributes, no other selectors should atempt to change them.
|
||||
*/
|
||||
|
||||
/* Default display mode transitions for various chrome elements */
|
||||
.OT_publisher .OT_edge-bar-item,
|
||||
.OT_subscriber .OT_edge-bar-item {
|
||||
-ms-transition-property: top, bottom, opacity;
|
||||
-ms-transition-duration: 0.5s;
|
||||
-moz-transition-property: top, bottom, opacity;
|
||||
-moz-transition-duration: 0.5s;
|
||||
-webkit-transition-property: top, bottom, opacity;
|
||||
-webkit-transition-duration: 0.5s;
|
||||
-o-transition-property: top, bottom, opacity;
|
||||
-o-transition-duration: 0.5s;
|
||||
transition-property: top, bottom, opacity;
|
||||
transition-duration: 0.5s;
|
||||
transition-timing-function: ease-in;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_edge-bar-item.OT_mode-off,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_mode-off,
|
||||
.OT_publisher .OT_edge-bar-item.OT_mode-auto,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_mode-auto,
|
||||
.OT_publisher .OT_edge-bar-item.OT_mode-mini-auto,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_mode-mini-auto {
|
||||
top: -25px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.OT_mini .OT_mute.OT_mode-auto,
|
||||
.OT_publisher .OT_mute.OT_mode-mini-auto,
|
||||
.OT_subscriber .OT_mute.OT_mode-mini-auto {
|
||||
top: 50%;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-off,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-off,
|
||||
.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto,
|
||||
.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-mini-auto,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-mini-auto {
|
||||
top: auto;
|
||||
bottom: -25px;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_edge-bar-item.OT_mode-on,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_mode-on,
|
||||
.OT_publisher:hover .OT_edge-bar-item.OT_mode-auto,
|
||||
.OT_subscriber:hover .OT_edge-bar-item.OT_mode-auto,
|
||||
.OT_publisher:hover .OT_edge-bar-item.OT_mode-mini-auto,
|
||||
.OT_subscriber:hover .OT_edge-bar-item.OT_mode-mini-auto {
|
||||
top: 0;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.OT_mini .OT_mute.OT_mode-on,
|
||||
.OT_mini:hover .OT_mute.OT_mode-auto,
|
||||
.OT_mute.OT_mode-mini,
|
||||
.OT_root:hover .OT_mute.OT_mode-mini-auto {
|
||||
top: 50%;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-on,
|
||||
.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-on,
|
||||
.OT_publisher:hover .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto,
|
||||
.OT_subscriber:hover .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto {
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_opentok.OT_mode-off,
|
||||
.OT_publisher .OT_opentok.OT_mode-auto,
|
||||
.OT_subscriber .OT_opentok.OT_mode-off,
|
||||
.OT_subscriber .OT_opentok.OT_mode-auto {
|
||||
top: -17px;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_opentok.OT_mode-on,
|
||||
.OT_publisher:hover .OT_opentok.OT_mode-auto,
|
||||
.OT_subscriber .OT_opentok.OT_mode-on,
|
||||
.OT_subscriber:hover .OT_opentok.OT_mode-auto {
|
||||
top: 8px;
|
||||
}
|
||||
|
||||
|
||||
/* Contains the video element, used to fix video letter-boxing */
|
||||
.OT_video-container {
|
||||
position: absolute;
|
||||
background-color: #000000;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.OT_hidden-audio {
|
||||
position: absolute !important;
|
||||
height: 1px !important;
|
||||
width: 1px !important;
|
||||
}
|
||||
|
||||
/* Load animation */
|
||||
.OT_root .OT_video-loading {
|
||||
background: url('../images/rtc/loader.gif') no-repeat;
|
||||
display:none;
|
||||
position: absolute;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -16px;
|
||||
margin-top: -16px;
|
||||
}
|
||||
|
||||
.OT_publisher.OT_loading .OT_video-loading,
|
||||
.OT_subscriber.OT_loading .OT_video-loading {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.OT_publisher.OT_loading video,
|
||||
.OT_subscriber.OT_loading video {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.OT_video-poster {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-position: 50% 50%;
|
||||
background-repeat: no-repeat;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.OT_publisher .OT_video-poster {
|
||||
background-image: url(../images/rtc/audioonly-publisher.png);
|
||||
}
|
||||
|
||||
.OT_subscriber .OT_video-poster {
|
||||
background-image: url(../images/rtc/audioonly-subscriber.png);
|
||||
}
|
До Ширина: | Высота: | Размер: 10 KiB После Ширина: | Высота: | Размер: 10 KiB |
До Ширина: | Высота: | Размер: 6.4 KiB После Ширина: | Высота: | Размер: 6.4 KiB |
До Ширина: | Высота: | Размер: 7.7 KiB После Ширина: | Высота: | Размер: 7.7 KiB |
До Ширина: | Высота: | Размер: 9.3 KiB После Ширина: | Высота: | Размер: 9.3 KiB |
До Ширина: | Высота: | Размер: 19 KiB После Ширина: | Высота: | Размер: 19 KiB |
До Ширина: | Высота: | Размер: 1.4 KiB После Ширина: | Высота: | Размер: 1.4 KiB |
До Ширина: | Высота: | Размер: 2.4 KiB После Ширина: | Высота: | Размер: 2.4 KiB |
До Ширина: | Высота: | Размер: 2.8 KiB После Ширина: | Высота: | Размер: 2.8 KiB |
До Ширина: | Высота: | Размер: 8.6 KiB После Ширина: | Высота: | Размер: 8.6 KiB |
До Ширина: | Высота: | Размер: 1.0 KiB После Ширина: | Высота: | Размер: 1.0 KiB |
До Ширина: | Высота: | Размер: 734 B После Ширина: | Высота: | Размер: 734 B |
До Ширина: | Высота: | Размер: 861 B После Ширина: | Высота: | Размер: 861 B |
До Ширина: | Высота: | Размер: 622 B После Ширина: | Высота: | Размер: 622 B |
7
browser/components/loop/content/libs/sdk-content/js/dynamic_config.min.js
поставляемый
Normal file
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
|
||||
Copyright (c) 2014 TokBox, Inc.
|
||||
Released under the MIT license
|
||||
http://opensource.org/licenses/MIT
|
||||
*/
|
||||
!function(){TB.Config.replaceWith({global:{exceptionLogging:{enabled:!0,messageLimitPerPartner:100},iceServers:{enabled:!1},instrumentation:{enabled:!1,debugging:!1},tokshow:{textchat:!0}},partners:{change878:{instrumentation:{enabled:!0,debugging:!0}}}})}(TB);
|
|
@ -1,20 +1,20 @@
|
|||
/**
|
||||
* @license OpenTok JavaScript Library v2.2.5
|
||||
* @license OpenTok JavaScript Library v2.2.6
|
||||
* http://www.tokbox.com/
|
||||
*
|
||||
* Copyright (c) 2014 TokBox, Inc.
|
||||
* Released under the MIT license
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
* Date: May 22 07:14:18 2014
|
||||
* Date: June 24 11:09:07 2014
|
||||
*/
|
||||
|
||||
(function(window) {
|
||||
if (!window.OT) window.OT = {};
|
||||
|
||||
OT.properties = {
|
||||
version: 'v2.2.5', // The current version (eg. v2.0.4) (This is replaced by gradle)
|
||||
build: '12d9384', // The current build hash (This is replaced by gradle)
|
||||
version: 'v2.2.6', // The current version (eg. v2.0.4) (This is replaced by gradle)
|
||||
build: 'd326ad1', // The current build hash (This is replaced by gradle)
|
||||
|
||||
// Whether or not to turn on debug logging by default
|
||||
debug: 'false',
|
||||
|
@ -22,12 +22,11 @@
|
|||
websiteURL: 'http://www.tokbox.com',
|
||||
|
||||
// The URL of the CDN
|
||||
// XXX: patched for loop so we use local files
|
||||
cdnURL: 'loop/otcdn',
|
||||
cdnURL: 'http://static.opentok.com',
|
||||
// The URL to use for logging
|
||||
loggingURL: 'https://hlg.tokbox.com/prod',
|
||||
// The anvil API URL
|
||||
apiURL: 'https://anvil.opentok.com',
|
||||
apiURL: 'http://anvil.opentok.com',
|
||||
|
||||
// What protocol to use when connecting to the rumor web socket
|
||||
messagingProtocol: 'wss',
|
||||
|
@ -37,10 +36,7 @@
|
|||
// If this environment supports SSL
|
||||
supportSSL: 'true',
|
||||
// The CDN to use if we're using SSL
|
||||
// XXX: patched for loop so we use local files
|
||||
cdnURLSSL: 'loop/otcdn',
|
||||
// The loggging URL to use if we're using SSL
|
||||
loggingURLSSL: 'https://hlg.tokbox.com/prod',
|
||||
cdnURLSSL: 'https://static.opentok.com',
|
||||
// The anvil API URL to use if we're using SSL
|
||||
apiURLSSL: 'https://anvil.opentok.com',
|
||||
|
||||
|
@ -2886,6 +2882,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
if (enumerable === void 0) enumerable = false;
|
||||
|
||||
for (var key in getters) {
|
||||
if(!getters.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
propsDefinition[key] = {
|
||||
get: getters[key],
|
||||
enumerable: enumerable
|
||||
|
@ -3018,13 +3017,20 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
if (props.supportSSL && (window.location.protocol.indexOf('https') >= 0 ||
|
||||
window.location.protocol.indexOf('chrome-extension') >= 0)) {
|
||||
props.assetURL = props.cdnURLSSL + '/webrtc/' + props.version;
|
||||
props.loggingURL = props.loggingURLSSL;
|
||||
} else {
|
||||
props.assetURL = props.cdnURL + '/webrtc/' + props.version;
|
||||
}
|
||||
|
||||
props.configURL = props.assetURL + '/js/dynamic_config.min.js';
|
||||
props.cssURL = props.assetURL + '/css/ot.min.css';
|
||||
|
||||
if (window.OTProperties) {
|
||||
// Allow window.OTProperties to override cdnURL, configURL, assetURL and cssURL
|
||||
if (window.OTProperties.cdnURL) props.cdnURL = window.OTProperties.cdnURL;
|
||||
if (window.OTProperties.configURL) props.configURL = window.OTProperties.configURL;
|
||||
if (window.OTProperties.assetURL) props.assetURL = window.OTProperties.assetURL;
|
||||
if (window.OTProperties.cssURL) props.cssURL = window.OTProperties.cssURL;
|
||||
}
|
||||
|
||||
return props;
|
||||
}(OT.properties);
|
||||
|
@ -3519,8 +3525,7 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
/* global mozRTCPeerConnection */
|
||||
|
||||
var nativeGetUserMedia,
|
||||
mozToW3CErrors,
|
||||
chromeToW3CErrors,
|
||||
vendorToW3CErrors,
|
||||
gumNamesToMessages,
|
||||
mapVendorErrorName,
|
||||
parseErrorEvent,
|
||||
|
@ -3601,21 +3606,19 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
|
||||
// Mozilla error strings and the equivalent W3C names. NOT_SUPPORTED_ERROR does not
|
||||
// exist in the spec right now, so we'll include Mozilla's error description.
|
||||
mozToW3CErrors = {
|
||||
// Chrome TrackStartError is triggered when the camera is already used by another app (Windows)
|
||||
vendorToW3CErrors = {
|
||||
PERMISSION_DENIED: 'PermissionDeniedError',
|
||||
NOT_SUPPORTED_ERROR: 'NotSupportedError',
|
||||
MANDATORY_UNSATISFIED_ERROR: ' ConstraintNotSatisfiedError',
|
||||
NO_DEVICES_FOUND: 'NoDevicesFoundError',
|
||||
HARDWARE_UNAVAILABLE: 'HardwareUnavailableError'
|
||||
};
|
||||
|
||||
// Chrome only seems to expose a single error with a code of 1 right now.
|
||||
chromeToW3CErrors = {
|
||||
1: 'PermissionDeniedError'
|
||||
HARDWARE_UNAVAILABLE: 'HardwareUnavailableError',
|
||||
TrackStartError: 'HardwareUnavailableError'
|
||||
};
|
||||
|
||||
gumNamesToMessages = {
|
||||
PermissionDeniedError: 'End-user denied permission to hardware devices',
|
||||
PermissionDismissedError: 'End-user dismissed permission to hardware devices',
|
||||
NotSupportedError: 'A constraint specified is not supported by the browser.',
|
||||
ConstraintNotSatisfiedError: 'It\'s not possible to satisfy one or more constraints ' +
|
||||
'passed into the getUserMedia function',
|
||||
|
@ -3626,18 +3629,24 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
'that the chosen devices are not in use by another application.'
|
||||
};
|
||||
|
||||
// Map vendor error strings to names and messages
|
||||
mapVendorErrorName = function mapVendorErrorName (vendorErrorName, vendorErrors) {
|
||||
var errorName = vendorErrors[vendorErrorName],
|
||||
errorMessage = gumNamesToMessages[errorName];
|
||||
// Map vendor error strings to names and messages if possible
|
||||
mapVendorErrorName = function mapVendorErrorName(vendorErrorName, vendorErrors) {
|
||||
var errorName, errorMessage;
|
||||
|
||||
if (!errorMessage) {
|
||||
if(vendorErrors.hasOwnProperty(vendorErrorName)) {
|
||||
errorName = vendorErrors[vendorErrorName];
|
||||
} else {
|
||||
// This doesn't map to a known error from the Media Capture spec, it's
|
||||
// probably a custom vendor error message.
|
||||
errorMessage = null; // This is undefined?
|
||||
errorName = vendorErrorName;
|
||||
}
|
||||
|
||||
if(gumNamesToMessages.hasOwnProperty(errorName)) {
|
||||
errorMessage = gumNamesToMessages[errorName];
|
||||
} else {
|
||||
errorMessage = 'Unknown Error while getting user media';
|
||||
}
|
||||
|
||||
return {
|
||||
name: errorName,
|
||||
message: errorMessage
|
||||
|
@ -3646,30 +3655,17 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
|
||||
// Parse and normalise a getUserMedia error event from Chrome or Mozilla
|
||||
// @ref http://dev.w3.org/2011/webrtc/editor/getusermedia.html#idl-def-NavigatorUserMediaError
|
||||
parseErrorEvent = function parseErrorObject (event) {
|
||||
parseErrorEvent = function parseErrorObject(event) {
|
||||
var error;
|
||||
|
||||
if (OT.$.isObject(event) && event.name) {
|
||||
error = {
|
||||
name: event.name,
|
||||
message: event.message || gumNamesToMessages[event.name],
|
||||
constraintName: event.constraintName
|
||||
};
|
||||
|
||||
} else if (OT.$.isObject(event)) {
|
||||
error = mapVendorErrorName(event.code, chromeToW3CErrors);
|
||||
|
||||
// message and constraintName are probably missing if the
|
||||
// property is also omitted, but just in case they aren't.
|
||||
if (event.message) error.message = event.message;
|
||||
if (event.constraintName) error.constraintName = event.constraintName;
|
||||
|
||||
} else if (event && mozToW3CErrors.hasOwnProperty(event)) {
|
||||
error = mapVendorErrorName(event, mozToW3CErrors);
|
||||
|
||||
error = mapVendorErrorName(event.name, vendorToW3CErrors);
|
||||
error.constraintName = event.constraintName;
|
||||
} else if (typeof event === 'string') {
|
||||
error = mapVendorErrorName(event, vendorToW3CErrors);
|
||||
} else {
|
||||
error = {
|
||||
message: 'Unknown Error while getting user media'
|
||||
message: 'Unknown Error type while getting media'
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -3682,6 +3678,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
if (!constraints || !OT.$.isObject(constraints)) return true;
|
||||
|
||||
for (var key in constraints) {
|
||||
if(!constraints.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
if (constraints[key]) return false;
|
||||
}
|
||||
|
||||
|
@ -3769,6 +3768,29 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
return OT.$.supportsWebRTC() && OT.$.browser() === 'Chrome';
|
||||
};
|
||||
|
||||
OT.$.shouldAskForDevices = function(callback) {
|
||||
var memoiseReply = function(audio, video) {
|
||||
OT.$.shouldAskForDevices = function(callback) {
|
||||
setTimeout(callback.bind(null, { video: video, audio: audio }));
|
||||
};
|
||||
OT.$.shouldAskForDevices(callback);
|
||||
};
|
||||
var MST = window.MediaStreamTrack;
|
||||
if(MST != null && OT.$.isFunction(MST.getSources)) {
|
||||
window.MediaStreamTrack.getSources(function(sources) {
|
||||
var hasAudio = sources.some(function(src) {
|
||||
return src.kind === 'audio';
|
||||
});
|
||||
var hasVideo = sources.some(function(src) {
|
||||
return src.kind === 'video';
|
||||
});
|
||||
memoiseReply(hasAudio, hasVideo);
|
||||
});
|
||||
} else {
|
||||
memoiseReply(true, true);
|
||||
}
|
||||
};
|
||||
|
||||
// A wrapper for the builtin navigator.getUserMedia. In addition to the usual
|
||||
// getUserMedia behaviour, this helper method also accepts a accessDialogOpened
|
||||
// and accessDialogClosed callback.
|
||||
|
@ -3850,23 +3872,8 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
var error = parseErrorEvent(event);
|
||||
|
||||
// The error name 'PERMISSION_DENIED' is from an earlier version of the spec
|
||||
if (error.name === 'PermissionDeniedError') {
|
||||
var MST = window.MediaStreamTrack;
|
||||
if(MST != null && OT.$.isFunction(MST.getSources)) {
|
||||
window.MediaStreamTrack.getSources(function(sources) {
|
||||
if(sources.length > 0) {
|
||||
accessDenied.call(null, error);
|
||||
} else {
|
||||
failure.call(null, {
|
||||
name: 'NoDevicesFoundError',
|
||||
message: gumNamesToMessages.NoDevicesFoundError
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
accessDenied.call(null, error);
|
||||
}
|
||||
|
||||
if (error.name === 'PermissionDeniedError' || error.name === 'PermissionDismissedError') {
|
||||
accessDenied.call(null, error);
|
||||
} else {
|
||||
failure.call(null, error);
|
||||
}
|
||||
|
@ -4203,6 +4210,24 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
|
||||
this.trigger('orientationChanged');
|
||||
}
|
||||
},
|
||||
|
||||
// see https://wiki.mozilla.org/WebAPI/AudioChannels
|
||||
// The audioChannelType is currently only available in Firefox. This property returns
|
||||
// "unknown" in other browser. The related HTML tag attribute is "mozaudiochannel"
|
||||
audioChannelType: {
|
||||
get: function() {
|
||||
if ('mozAudioChannelType' in this.domElement) {
|
||||
return this.domElement.mozAudioChannelType;
|
||||
} else {
|
||||
return 'unknown';
|
||||
}
|
||||
},
|
||||
set: function(type) {
|
||||
if ('mozAudioChannelType' in this.domElement) {
|
||||
this.domElement.mozAudioChannelType = type;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -4221,6 +4246,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
}
|
||||
|
||||
for (var key in attributes) {
|
||||
if(!attributes.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
videoElement.setAttribute(key, attributes[key]);
|
||||
}
|
||||
}
|
||||
|
@ -5328,6 +5356,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
|
||||
return _models.filter(function(model) {
|
||||
for (var key in attrsOrFilterFn) {
|
||||
if(!attrsOrFilterFn.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
if (model[key] !== attrsOrFilterFn[key]) return false;
|
||||
}
|
||||
|
||||
|
@ -5346,6 +5377,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
else {
|
||||
filterFn = function(model) {
|
||||
for (var key in attrsOrFilterFn) {
|
||||
if(!attrsOrFilterFn.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
if (model[key] !== attrsOrFilterFn[key]) return false;
|
||||
}
|
||||
|
||||
|
@ -6194,6 +6228,19 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
this.newValue = newValue;
|
||||
};
|
||||
|
||||
/**
|
||||
* Defines event objects for the <code>archiveStarted</code> and <code>archiveStopped</code> events.
|
||||
* The Session object dispatches these events when an archive recording of the session starts and
|
||||
* stops.
|
||||
*
|
||||
* @property {String} id The archive ID.
|
||||
* @property {String} name The name of the archive. You can assign an archive a name when you create
|
||||
* it, using the <a href="http://www.tokbox.com/opentok/api">OpenTok REST API</a> or one of the
|
||||
* <a href="http://www.tokbox.com/opentok/libraries/server">OpenTok server SDKs</a>.
|
||||
*
|
||||
* @class ArchiveEvent
|
||||
* @augments Event
|
||||
*/
|
||||
OT.ArchiveEvent = function (type, archive) {
|
||||
OT.Event.call(this, type, false);
|
||||
this.type = type;
|
||||
|
@ -9182,6 +9229,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
i = 0;
|
||||
|
||||
for (var key in this.headers) {
|
||||
if(!this.headers.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
headerKey.push(new TextEncoder('utf-8').encode(key));
|
||||
headerVal.push(new TextEncoder('utf-8').encode(this.headers[key]));
|
||||
cBuf += 4;
|
||||
|
@ -11361,6 +11411,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
oldVideoDimensions = {};
|
||||
|
||||
for (var key in attributes) {
|
||||
if(!attributes.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
// we shouldn't really read this before we know the key is valid
|
||||
var oldValue = this[key];
|
||||
|
||||
|
@ -11440,7 +11493,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
* Date object by calling <code>new Date(creationTime)</code>, where <code>creationTime</code> is
|
||||
* the <code>creationTime</code> property of the Stream object.
|
||||
*
|
||||
* @property {Number} fps The frame rate of the video stream.
|
||||
* @property {Number} frameRate The frame rate of the video stream. This property is only set if the
|
||||
* publisher of the stream specifies a frame rate when calling the <code>OT.initPublisher()</code>
|
||||
* method; otherwise, this property is undefined.
|
||||
*
|
||||
* @property {Boolean} hasAudio Whether the stream has audio. This property can change if the
|
||||
* publisher turns on or off audio (by calling
|
||||
|
@ -11671,6 +11726,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
// Mass update, called by Raptor.Dispatcher
|
||||
this._.update = function (attributes) {
|
||||
for (var key in attributes) {
|
||||
if(!attributes.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
this._.updateProperty(key, attributes[key]);
|
||||
}
|
||||
}.bind(this);
|
||||
|
@ -11697,6 +11755,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
// Mass update, called by Raptor.Dispatcher
|
||||
this._.update = function (attributes) {
|
||||
for (var key in attributes) {
|
||||
if(!attributes.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
var oldValue = this[key];
|
||||
this[key] = attributes[key];
|
||||
|
||||
|
@ -13609,10 +13670,13 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
this.getAll = function() {
|
||||
var style = OT.$.clone(_style);
|
||||
|
||||
for (var i in style) {
|
||||
if (_COMPONENT_STYLES.indexOf(i) < 0) {
|
||||
for (var key in style) {
|
||||
if(!style.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
if (_COMPONENT_STYLES.indexOf(key) < 0) {
|
||||
// Strip unnecessary properties out, should this happen on Set?
|
||||
delete style[i];
|
||||
delete style[key];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13633,6 +13697,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
var oldValue, newValue;
|
||||
|
||||
for (var key in newStyles) {
|
||||
if(!newStyles.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
newValue = castValue(newStyles[key]);
|
||||
|
||||
if (isValidStyle(key, newValue)) {
|
||||
|
@ -14107,6 +14174,8 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
connectionId: _session && _session.connected ? _session.connection.connectionId : null,
|
||||
partnerId: _session ? _session.apiKey : OT.APIKEY,
|
||||
streamId: _stream ? _stream.id : null,
|
||||
width: _container ? OT.$.width(_container.domElement) : undefined,
|
||||
height: _container ? OT.$.height(_container.domElement) : undefined,
|
||||
widgetId: _guid,
|
||||
version: OT.properties.version,
|
||||
'media_server_name': _session ? _session.sessionInfo.messagingServer : null,
|
||||
|
@ -14138,7 +14207,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
OT.debug('OT.Publisher.onLoaded');
|
||||
|
||||
_state.set('MediaBound');
|
||||
_container.loading = false;
|
||||
// If we have a session and we haven't created the stream yet then
|
||||
// wait until that is complete before hiding the loading spinner
|
||||
_container.loading = this.session ? !_stream : false;
|
||||
_loaded = true;
|
||||
|
||||
_createChrome.call(this);
|
||||
|
@ -14256,6 +14327,7 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
},
|
||||
|
||||
accessDialogPrompt,
|
||||
accessDialogChromeTimeout,
|
||||
accessDialogFirefoxTimeout,
|
||||
accessDialogWasOpened = false,
|
||||
|
||||
|
@ -14272,7 +14344,9 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
function(event) {
|
||||
if(!event.isDefaultPrevented()) {
|
||||
if(browser.browser === 'Chrome') {
|
||||
accessDialogPrompt = OT.Dialogs.AllowDeny.Chrome.initialPrompt();
|
||||
accessDialogChromeTimeout = setTimeout(function() {
|
||||
accessDialogPrompt = OT.Dialogs.AllowDeny.Chrome.initialPrompt();
|
||||
}, 5000);
|
||||
} else if(browser.browser === 'Firefox') {
|
||||
accessDialogFirefoxTimeout = setTimeout(function() {
|
||||
accessDialogPrompt = OT.Dialogs.AllowDeny.Firefox.maybeDenied();
|
||||
|
@ -14286,6 +14360,11 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
onAccessDialogClosed = function() {
|
||||
logAnalyticsEvent('accessDialog', 'Closed', '', '');
|
||||
|
||||
if(accessDialogChromeTimeout) {
|
||||
clearTimeout(accessDialogChromeTimeout);
|
||||
accessDialogChromeTimeout = null;
|
||||
}
|
||||
|
||||
if(accessDialogFirefoxTimeout) {
|
||||
clearTimeout(accessDialogFirefoxTimeout);
|
||||
accessDialogFirefoxTimeout = null;
|
||||
|
@ -14364,6 +14443,7 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
_stream.on('destroyed', this.disconnect, this);
|
||||
|
||||
_state.set('Publishing');
|
||||
_container.loading = !_loaded;
|
||||
_publishStartTime = new Date();
|
||||
|
||||
this.trigger('publishComplete', null, this);
|
||||
|
@ -14559,7 +14639,7 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
publishVideo : true,
|
||||
mirror: true
|
||||
});
|
||||
|
||||
|
||||
if (!_publishProperties.constraints) {
|
||||
_publishProperties.constraints = OT.$.clone(defaultConstraints);
|
||||
if (_publishProperties.resolution) {
|
||||
|
@ -14621,14 +14701,24 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
_container = new OT.WidgetView(targetElement, _publishProperties);
|
||||
_domId = _container.domId;
|
||||
|
||||
OT.$.getUserMedia(
|
||||
_publishProperties.constraints,
|
||||
onStreamAvailable.bind(this),
|
||||
onStreamAvailableError.bind(this),
|
||||
onAccessDialogOpened.bind(this),
|
||||
onAccessDialogClosed.bind(this),
|
||||
onAccessDenied.bind(this)
|
||||
);
|
||||
OT.$.shouldAskForDevices(function(devices) {
|
||||
if(!devices.video) {
|
||||
OT.warn('Setting video constraint to false, there are no video sources');
|
||||
_publishProperties.constraints.video = false;
|
||||
}
|
||||
if(!devices.audio) {
|
||||
OT.warn('Setting audio constraint to false, there are no audio sources');
|
||||
_publishProperties.constraints.audio = false;
|
||||
}
|
||||
OT.$.getUserMedia(
|
||||
_publishProperties.constraints,
|
||||
onStreamAvailable.bind(this),
|
||||
onStreamAvailableError.bind(this),
|
||||
onAccessDialogOpened.bind(this),
|
||||
onAccessDialogClosed.bind(this),
|
||||
onAccessDenied.bind(this)
|
||||
);
|
||||
}.bind(this));
|
||||
}, this);
|
||||
|
||||
return this;
|
||||
|
@ -15197,6 +15287,8 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
var QoSBlob = {
|
||||
widget_type: 'Subscriber',
|
||||
stream_type : 'WebRTC',
|
||||
width: _container ? OT.$.width(_container.domElement) : undefined,
|
||||
height: _container ? OT.$.height(_container.domElement) : undefined,
|
||||
session_id: _session ? _session.sessionId : null,
|
||||
connectionId: _session ? _session.connection.connectionId : null,
|
||||
media_server_name: _session ? _session.sessionInfo.messagingServer : null,
|
||||
|
@ -15320,6 +15412,8 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
_subscribeAudioFalseWorkaround = preserver;
|
||||
|
||||
var streamElement = new OT.VideoElement();
|
||||
// makes the incoming audio streams takes priority (will impact only FF OS for now)
|
||||
streamElement.audioChannelType = 'telephony';
|
||||
|
||||
// Initialize the audio volume
|
||||
streamElement.setAudioVolume(_audioVolume);
|
||||
|
@ -17921,6 +18015,26 @@ OTHelpers.centerElement = function(element, width, height) {
|
|||
}, true);
|
||||
|
||||
|
||||
/**
|
||||
* Dispatched when an archive recording of the session starts.
|
||||
*
|
||||
* @name archiveStarted
|
||||
* @event
|
||||
* @memberof Session
|
||||
* @see ArchiveEvent
|
||||
* @see <a href="http://www.tokbox.com/opentok/tutorials/archiving">Archiving overview</a>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Dispatched when an archive recording of the session stops.
|
||||
*
|
||||
* @name archiveStopped
|
||||
* @event
|
||||
* @memberof Session
|
||||
* @see ArchiveEvent
|
||||
* @see <a href="http://www.tokbox.com/opentok/tutorials/archiving">Archiving overview</a>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A new client, other than your own, has connected to the session.
|
||||
* @name connectionCreated
|
||||
|
|
|
@ -56,18 +56,18 @@ browser.jar:
|
|||
|
||||
# Partner SDK assets
|
||||
content/browser/loop/libs/sdk.js (content/libs/sdk.js)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/css/ot.min.css (content/libs/otcdn/webrtc/v2.2.5/css/ot.min.css)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/js/dynamic_config.min.js (content/libs/otcdn/webrtc/v2.2.5/js/dynamic_config.min.js)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/access-denied-chrome.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-denied-chrome.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/access-denied-copy-firefox.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-denied-copy-firefox.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/access-denied-firefox.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-denied-firefox.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/access-predenied-chrome.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-predenied-chrome.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/access-prompt-chrome.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/access-prompt-chrome.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/audioonly-publisher.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/audioonly-publisher.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/audioonly-subscriber.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/audioonly-subscriber.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/buttons.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/buttons.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/loader.gif (content/libs/otcdn/webrtc/v2.2.5/images/rtc/loader.gif)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/mic-off.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/mic-off.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/mic-on.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/mic-on.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/speaker-off.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/speaker-off.png)
|
||||
content/browser/loop/otcdn/webrtc/v2.2.5/images/rtc/speaker-on.png (content/libs/otcdn/webrtc/v2.2.5/images/rtc/speaker-on.png)
|
||||
content/browser/loop/sdk-content/css/ot.css (content/libs/sdk-content/css/ot.css)
|
||||
content/browser/loop/sdk-content/js/dynamic_config.min.js (content/libs/sdk-content/js/dynamic_config.min.js)
|
||||
content/browser/loop/sdk-content/images/rtc/access-denied-chrome.png (content/libs/sdk-content/images/rtc/access-denied-chrome.png)
|
||||
content/browser/loop/sdk-content/images/rtc/access-denied-copy-firefox.png (content/libs/sdk-content/images/rtc/access-denied-copy-firefox.png)
|
||||
content/browser/loop/sdk-content/images/rtc/access-denied-firefox.png (content/libs/sdk-content/images/rtc/access-denied-firefox.png)
|
||||
content/browser/loop/sdk-content/images/rtc/access-predenied-chrome.png (content/libs/sdk-content/images/rtc/access-predenied-chrome.png)
|
||||
content/browser/loop/sdk-content/images/rtc/access-prompt-chrome.png (content/libs/sdk-content/images/rtc/access-prompt-chrome.png)
|
||||
content/browser/loop/sdk-content/images/rtc/audioonly-publisher.png (content/libs/sdk-content/images/rtc/audioonly-publisher.png)
|
||||
content/browser/loop/sdk-content/images/rtc/audioonly-subscriber.png (content/libs/sdk-content/images/rtc/audioonly-subscriber.png)
|
||||
content/browser/loop/sdk-content/images/rtc/buttons.png (content/libs/sdk-content/images/rtc/buttons.png)
|
||||
content/browser/loop/sdk-content/images/rtc/loader.gif (content/libs/sdk-content/images/rtc/loader.gif)
|
||||
content/browser/loop/sdk-content/images/rtc/mic-off.png (content/libs/sdk-content/images/rtc/mic-off.png)
|
||||
content/browser/loop/sdk-content/images/rtc/mic-on.png (content/libs/sdk-content/images/rtc/mic-on.png)
|
||||
content/browser/loop/sdk-content/images/rtc/speaker-off.png (content/libs/sdk-content/images/rtc/speaker-off.png)
|
||||
content/browser/loop/sdk-content/images/rtc/speaker-on.png (content/libs/sdk-content/images/rtc/speaker-on.png)
|
||||
|
|
|
@ -6814,6 +6814,11 @@ elif test "$GNU_CC"; then
|
|||
MOZ_CXX_SUPPORTS_WARNING(-W, no-error=maybe-uninitialized, ac_cxx_has_noerror_maybe_uninitialized)
|
||||
MOZ_C_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_c_has_noerror_deprecated_declarations)
|
||||
MOZ_CXX_SUPPORTS_WARNING(-W, no-error=deprecated-declarations, ac_cxx_has_noerror_deprecated_declarations)
|
||||
|
||||
if test -n "$MOZ_PGO"; then
|
||||
MOZ_C_SUPPORTS_WARNING(-W, no-error=coverage-mismatch, ac_c_has_noerror_coverage_mismatch)
|
||||
MOZ_CXX_SUPPORTS_WARNING(-W, no-error=coverage-mismatch, ac_cxx_has_noerror_coverage_mismatch)
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl ========================================================
|
||||
|
|
|
@ -2149,6 +2149,24 @@ public:
|
|||
*/
|
||||
static bool IsContentInsertionPoint(const nsIContent* aContent);
|
||||
|
||||
/**
|
||||
* Returns whether a given header is forbidden for an XHR or fetch
|
||||
* request.
|
||||
*/
|
||||
static bool IsForbiddenRequestHeader(const nsACString& aHeader);
|
||||
|
||||
/**
|
||||
* Returns whether a given header is forbidden for a system XHR
|
||||
* request.
|
||||
*/
|
||||
static bool IsForbiddenSystemRequestHeader(const nsACString& aHeader);
|
||||
|
||||
/**
|
||||
* Returns whether a given header is forbidden for an XHR or fetch
|
||||
* response.
|
||||
*/
|
||||
static bool IsForbiddenResponseHeader(const nsACString& aHeader);
|
||||
|
||||
private:
|
||||
static bool InitializeEventTable();
|
||||
|
||||
|
|
|
@ -132,7 +132,6 @@ private:
|
|||
Element* aFrom, Element* aTo)
|
||||
: Notification(aTarget), mFrom(aFrom), mTo(aTo)
|
||||
{}
|
||||
virtual ~ChangeNotification() {}
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_IMETHOD Run() MOZ_OVERRIDE {
|
||||
|
@ -148,6 +147,8 @@ private:
|
|||
Notification::Clear(); mFrom = nullptr; mTo = nullptr;
|
||||
}
|
||||
protected:
|
||||
virtual ~ChangeNotification() {}
|
||||
|
||||
nsRefPtr<Element> mFrom;
|
||||
nsRefPtr<Element> mTo;
|
||||
};
|
||||
|
|
|
@ -23,6 +23,8 @@ private:
|
|||
"Bad NodeType in aNodeInfo");
|
||||
}
|
||||
|
||||
virtual ~Comment();
|
||||
|
||||
public:
|
||||
Comment(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
|
||||
: nsGenericDOMDataNode(aNodeInfo)
|
||||
|
@ -36,8 +38,6 @@ public:
|
|||
Init();
|
||||
}
|
||||
|
||||
virtual ~Comment();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
|
|
@ -138,6 +138,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual ~QuadBounds() {}
|
||||
|
||||
nsRefPtr<DOMQuad> mQuad;
|
||||
};
|
||||
|
||||
|
|
|
@ -209,6 +209,13 @@ protected:
|
|||
};
|
||||
|
||||
}
|
||||
|
||||
template<>
|
||||
struct HasDangerousPublicDestructor<dom::DOMRect>
|
||||
{
|
||||
static const bool value = true;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /*MOZILLA_DOMRECT_H_*/
|
||||
|
|
|
@ -66,10 +66,6 @@ public:
|
|||
Init();
|
||||
}
|
||||
|
||||
virtual ~DocumentFragment()
|
||||
{
|
||||
}
|
||||
|
||||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
|
||||
// nsIContent
|
||||
|
@ -140,6 +136,10 @@ public:
|
|||
#endif
|
||||
|
||||
protected:
|
||||
virtual ~DocumentFragment()
|
||||
{
|
||||
}
|
||||
|
||||
nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
|
||||
nsIContent* mHost; // Weak
|
||||
};
|
||||
|
|
|
@ -46,8 +46,6 @@ public:
|
|||
const nsAString& aSystemId,
|
||||
const nsAString& aInternalSubset);
|
||||
|
||||
virtual ~DocumentType();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -77,6 +75,8 @@ public:
|
|||
virtual nsIDOMNode* AsDOMNode() MOZ_OVERRIDE { return this; }
|
||||
|
||||
protected:
|
||||
virtual ~DocumentType();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext *cx) MOZ_OVERRIDE;
|
||||
|
||||
nsString mPublicId;
|
||||
|
|
|
@ -47,7 +47,6 @@ friend class AsyncVerifyRedirectCallbackFwr;
|
|||
|
||||
public:
|
||||
EventSource(nsPIDOMWindow* aOwnerWindow);
|
||||
virtual ~EventSource();
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS_INHERITED(
|
||||
EventSource, DOMEventTargetHelper)
|
||||
|
@ -102,6 +101,8 @@ public:
|
|||
virtual void DisconnectFromOwner() MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~EventSource();
|
||||
|
||||
nsresult Init(nsISupports* aOwner,
|
||||
const nsAString& aURL,
|
||||
bool aWithCredentials);
|
||||
|
|
|
@ -53,6 +53,9 @@ FileIOObject::FileIOObject()
|
|||
mTotal(0), mTransferred(0)
|
||||
{}
|
||||
|
||||
FileIOObject::~FileIOObject()
|
||||
{}
|
||||
|
||||
void
|
||||
FileIOObject::StartProgressEventTimer()
|
||||
{
|
||||
|
|
|
@ -65,6 +65,8 @@ public:
|
|||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(FileIOObject, DOMEventTargetHelper)
|
||||
|
||||
protected:
|
||||
virtual ~FileIOObject();
|
||||
|
||||
// Implemented by the derived class to do whatever it needs to do for abort
|
||||
virtual void DoAbort(nsAString& aEvent) = 0;
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ public:
|
|||
NodeIterator(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
const NodeFilterHolder &aFilter);
|
||||
virtual ~NodeIterator();
|
||||
|
||||
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
|
||||
|
||||
|
@ -73,6 +72,8 @@ public:
|
|||
JSObject* WrapObject(JSContext *cx);
|
||||
|
||||
private:
|
||||
virtual ~NodeIterator();
|
||||
|
||||
struct NodePointer {
|
||||
NodePointer() : mNode(nullptr) {}
|
||||
NodePointer(nsINode *aNode, bool aBeforeNode);
|
||||
|
@ -116,12 +117,6 @@ private:
|
|||
|
||||
} // namespace dom
|
||||
|
||||
template<>
|
||||
struct HasDangerousPublicDestructor<dom::NodeIterator>
|
||||
{
|
||||
static const bool value = true;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_dom_NodeIterator_h
|
||||
|
|
|
@ -44,7 +44,6 @@ public:
|
|||
|
||||
ShadowRoot(nsIContent* aContent, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
|
||||
nsXBLPrototypeBinding* aProtoBinding);
|
||||
virtual ~ShadowRoot();
|
||||
|
||||
void AddToIdTable(Element* aElement, nsIAtom* aId);
|
||||
void RemoveFromIdTable(Element* aElement, nsIAtom* aId);
|
||||
|
@ -128,6 +127,7 @@ public:
|
|||
void SetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError);
|
||||
void StyleSheetChanged();
|
||||
protected:
|
||||
virtual ~ShadowRoot();
|
||||
|
||||
// The pool host is the parent of the nodes that will be distributed
|
||||
// into the insertion points in this ShadowRoot. See |ChangeShadowRoot|.
|
||||
|
@ -176,7 +176,6 @@ class ShadowRootStyleSheetList : public StyleSheetList
|
|||
{
|
||||
public:
|
||||
ShadowRootStyleSheetList(ShadowRoot* aShadowRoot);
|
||||
virtual ~ShadowRootStyleSheetList();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ShadowRootStyleSheetList, StyleSheetList)
|
||||
|
@ -190,6 +189,8 @@ public:
|
|||
virtual CSSStyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~ShadowRootStyleSheetList();
|
||||
|
||||
nsRefPtr<ShadowRoot> mShadowRoot;
|
||||
};
|
||||
|
||||
|
|
|
@ -1107,7 +1107,6 @@ class nsContentSubtreeIterator : public nsContentIterator
|
|||
{
|
||||
public:
|
||||
nsContentSubtreeIterator() : nsContentIterator(false) {}
|
||||
virtual ~nsContentSubtreeIterator() {}
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsContentSubtreeIterator, nsContentIterator)
|
||||
|
@ -1131,6 +1130,7 @@ public:
|
|||
virtual void Last();
|
||||
|
||||
protected:
|
||||
virtual ~nsContentSubtreeIterator() {}
|
||||
|
||||
// Returns the highest inclusive ancestor of aNode that's in the range
|
||||
// (possibly aNode itself). Returns null if aNode is null, or is not itself
|
||||
|
|
|
@ -131,6 +131,9 @@ public:
|
|||
}
|
||||
virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~nsSimpleContentList() {}
|
||||
|
||||
private:
|
||||
// This has to be a strong reference, the root might go away before the list.
|
||||
nsCOMPtr<nsINode> mRoot;
|
||||
|
@ -249,12 +252,13 @@ public:
|
|||
nsIAtom* aMatchAtom = nullptr,
|
||||
int32_t aMatchNameSpaceId = kNameSpaceID_None,
|
||||
bool aFuncMayDependOnAttr = true);
|
||||
virtual ~nsContentList();
|
||||
|
||||
// nsWrapperCache
|
||||
using nsWrapperCache::GetWrapperPreserveColor;
|
||||
virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
|
||||
protected:
|
||||
virtual ~nsContentList();
|
||||
|
||||
virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
|
||||
{
|
||||
return nsWrapperCache::GetWrapperPreserveColor();
|
||||
|
|
|
@ -6806,6 +6806,47 @@ nsContentUtils::IsContentInsertionPoint(const nsIContent* aContent)
|
|||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
bool
|
||||
nsContentUtils::IsForbiddenRequestHeader(const nsACString& aHeader)
|
||||
{
|
||||
if (IsForbiddenSystemRequestHeader(aHeader)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return StringBeginsWith(aHeader, NS_LITERAL_CSTRING("proxy-"),
|
||||
nsCaseInsensitiveCStringComparator()) ||
|
||||
StringBeginsWith(aHeader, NS_LITERAL_CSTRING("sec-"),
|
||||
nsCaseInsensitiveCStringComparator());
|
||||
}
|
||||
|
||||
// static
|
||||
bool
|
||||
nsContentUtils::IsForbiddenSystemRequestHeader(const nsACString& aHeader)
|
||||
{
|
||||
static const char *kInvalidHeaders[] = {
|
||||
"accept-charset", "accept-encoding", "access-control-request-headers",
|
||||
"access-control-request-method", "connection", "content-length",
|
||||
"cookie", "cookie2", "content-transfer-encoding", "date", "dnt",
|
||||
"expect", "host", "keep-alive", "origin", "referer", "te", "trailer",
|
||||
"transfer-encoding", "upgrade", "user-agent", "via"
|
||||
};
|
||||
for (uint32_t i = 0; i < ArrayLength(kInvalidHeaders); ++i) {
|
||||
if (aHeader.LowerCaseEqualsASCII(kInvalidHeaders[i])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
bool
|
||||
nsContentUtils::IsForbiddenResponseHeader(const nsACString& aHeader)
|
||||
{
|
||||
return (aHeader.LowerCaseEqualsASCII("set-cookie") ||
|
||||
aHeader.LowerCaseEqualsASCII("set-cookie2"));
|
||||
}
|
||||
|
||||
bool
|
||||
nsContentUtils::DOMWindowDumpEnabled()
|
||||
{
|
||||
|
|
|
@ -453,6 +453,10 @@ nsCORSListenerProxy::nsCORSListenerProxy(nsIStreamListener* aOuter,
|
|||
mPreflightHeaders.Sort();
|
||||
}
|
||||
|
||||
nsCORSListenerProxy::~nsCORSListenerProxy()
|
||||
{
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsCORSListenerProxy::Init(nsIChannel* aChannel, bool aAllowDataURI)
|
||||
{
|
||||
|
|
|
@ -62,7 +62,7 @@ public:
|
|||
nsresult Init(nsIChannel* aChannel, bool aAllowDataURI = false);
|
||||
|
||||
private:
|
||||
~nsCORSListenerProxy() {}
|
||||
~nsCORSListenerProxy();
|
||||
|
||||
nsresult UpdateChannel(nsIChannel* aChannel, bool aAllowDataURI = false);
|
||||
nsresult CheckRequestApproved(nsIRequest* aRequest);
|
||||
|
|
|
@ -108,6 +108,8 @@ public:
|
|||
virtual nsresult GetMozFullPathInternal(nsAString& aFullPath) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~DOMMultipartFileImpl() {}
|
||||
|
||||
nsresult ParseBlobArrayArgument(JSContext* aCx, JS::Value& aValue,
|
||||
bool aNativeEOL, UnwrapFuncPtr aUnwrapFunc);
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ class nsDOMDataChannel : public mozilla::DOMEventTargetHelper,
|
|||
public:
|
||||
nsDOMDataChannel(already_AddRefed<mozilla::DataChannel>& aDataChannel,
|
||||
nsPIDOMWindow* aWindow);
|
||||
~nsDOMDataChannel();
|
||||
|
||||
nsresult Init(nsPIDOMWindow* aDOMWindow);
|
||||
|
||||
|
@ -97,6 +96,9 @@ public:
|
|||
virtual void
|
||||
AppReady();
|
||||
|
||||
protected:
|
||||
~nsDOMDataChannel();
|
||||
|
||||
private:
|
||||
void Send(nsIInputStream* aMsgStream, const nsACString& aMsgString,
|
||||
uint32_t aMsgLength, bool aIsBinary, mozilla::ErrorResult& aRv);
|
||||
|
|
|
@ -35,7 +35,6 @@ class nsDOMFileReader : public mozilla::dom::FileIOObject,
|
|||
typedef mozilla::dom::GlobalObject GlobalObject;
|
||||
public:
|
||||
nsDOMFileReader();
|
||||
virtual ~nsDOMFileReader();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -114,6 +113,8 @@ public:
|
|||
void RootResultArrayBuffer();
|
||||
|
||||
protected:
|
||||
virtual ~nsDOMFileReader();
|
||||
|
||||
enum eDataFormat {
|
||||
FILE_AS_ARRAYBUFFER,
|
||||
FILE_AS_BINARY,
|
||||
|
|
|
@ -11326,8 +11326,6 @@ public:
|
|||
mDocument(do_GetWeakReference(aElement->OwnerDoc())),
|
||||
mUserInputOrChromeCaller(aUserInputOrChromeCaller) {}
|
||||
|
||||
virtual ~nsPointerLockPermissionRequest() {}
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSICONTENTPERMISSIONREQUEST
|
||||
|
||||
|
@ -11387,6 +11385,9 @@ public:
|
|||
nsWeakPtr mElement;
|
||||
nsWeakPtr mDocument;
|
||||
bool mUserInputOrChromeCaller;
|
||||
|
||||
protected:
|
||||
virtual ~nsPointerLockPermissionRequest() {}
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED(nsPointerLockPermissionRequest,
|
||||
|
|
|
@ -441,7 +441,6 @@ class nsDOMStyleSheetList : public mozilla::dom::StyleSheetList,
|
|||
{
|
||||
public:
|
||||
nsDOMStyleSheetList(nsIDocument *aDocument);
|
||||
virtual ~nsDOMStyleSheetList();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -462,6 +461,8 @@ public:
|
|||
IndexedGetter(uint32_t aIndex, bool& aFound) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~nsDOMStyleSheetList();
|
||||
|
||||
int32_t mLength;
|
||||
nsIDocument* mDocument;
|
||||
};
|
||||
|
|
|
@ -2056,6 +2056,7 @@ GK_ATOM(RemoteId, "_remote_id")
|
|||
GK_ATOM(DisplayPort, "_displayport")
|
||||
GK_ATOM(DisplayPortMargins, "_displayportmargins")
|
||||
GK_ATOM(DisplayPortBase, "_displayportbase")
|
||||
GK_ATOM(AsyncScrollLayerCreationFailed, "_asyncscrolllayercreationfailed")
|
||||
|
||||
// Names for system metrics
|
||||
GK_ATOM(color_picker_available, "color-picker-available")
|
||||
|
|
|
@ -25,7 +25,6 @@ public:
|
|||
nsHostObjectURI(nsIPrincipal* aPrincipal) :
|
||||
nsSimpleURI(), mPrincipal(aPrincipal)
|
||||
{}
|
||||
virtual ~nsHostObjectURI() {}
|
||||
|
||||
// For use only from deserialization
|
||||
nsHostObjectURI() : nsSimpleURI() {}
|
||||
|
@ -47,6 +46,9 @@ public:
|
|||
{ return new nsHostObjectURI(); }
|
||||
|
||||
nsCOMPtr<nsIPrincipal> mPrincipal;
|
||||
|
||||
protected:
|
||||
virtual ~nsHostObjectURI() {}
|
||||
};
|
||||
|
||||
#define NS_HOSTOBJECTURI_CID \
|
||||
|
|
|
@ -38,7 +38,6 @@ class nsInProcessTabChildGlobal : public mozilla::DOMEventTargetHelper,
|
|||
public:
|
||||
nsInProcessTabChildGlobal(nsIDocShell* aShell, nsIContent* aOwner,
|
||||
nsFrameMessageManager* aChrome);
|
||||
virtual ~nsInProcessTabChildGlobal();
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsInProcessTabChildGlobal,
|
||||
mozilla::DOMEventTargetHelper)
|
||||
|
@ -155,6 +154,8 @@ public:
|
|||
return mGlobal->GetJSObject();
|
||||
}
|
||||
protected:
|
||||
virtual ~nsInProcessTabChildGlobal();
|
||||
|
||||
nsresult Init();
|
||||
nsresult InitTabChildGlobal();
|
||||
nsCOMPtr<nsIContentFrameMessageManager> mMessageManager;
|
||||
|
|
|
@ -390,6 +390,9 @@ public:
|
|||
// nsITimerCallback
|
||||
NS_IMETHOD Notify(nsITimer *timer);
|
||||
|
||||
protected:
|
||||
virtual ~nsStopPluginRunnable() {}
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsITimer> mTimer;
|
||||
nsRefPtr<nsPluginInstanceOwner> mInstanceOwner;
|
||||
|
@ -2450,7 +2453,7 @@ nsObjectLoadingContent::UnloadObject(bool aResetState)
|
|||
|
||||
mScriptRequested = false;
|
||||
|
||||
if (!mInstanceOwner) {
|
||||
if (mIsStopping) {
|
||||
// The protochain is normally thrown out after a plugin stops, but if we
|
||||
// re-enter while stopping a plugin and try to load something new, we need
|
||||
// to throw away the old protochain in the nested unload.
|
||||
|
|
|
@ -45,10 +45,6 @@ public:
|
|||
NS_ASSERTION(mAttrName, "Must have attr name");
|
||||
}
|
||||
|
||||
virtual ~nsAttributeTextNode() {
|
||||
NS_ASSERTION(!mGrandparent, "We were not unbound!");
|
||||
}
|
||||
|
||||
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
||||
nsIContent* aBindingParent,
|
||||
bool aCompileEventHandlers);
|
||||
|
@ -79,6 +75,10 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
virtual ~nsAttributeTextNode() {
|
||||
NS_ASSERTION(!mGrandparent, "We were not unbound!");
|
||||
}
|
||||
|
||||
// Update our text to our parent's current attr value
|
||||
void UpdateText(bool aNotify);
|
||||
|
||||
|
|
|
@ -43,8 +43,6 @@ public:
|
|||
Init();
|
||||
}
|
||||
|
||||
virtual ~nsTextNode();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
@ -81,6 +79,8 @@ public:
|
|||
#endif
|
||||
|
||||
protected:
|
||||
virtual ~nsTextNode();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
};
|
||||
|
||||
|
|
|
@ -1254,9 +1254,7 @@ bool
|
|||
nsXMLHttpRequest::IsSafeHeader(const nsACString& header, nsIHttpChannel* httpChannel)
|
||||
{
|
||||
// See bug #380418. Hide "Set-Cookie" headers from non-chrome scripts.
|
||||
if (!IsSystemXHR() &&
|
||||
(header.LowerCaseEqualsASCII("set-cookie") ||
|
||||
header.LowerCaseEqualsASCII("set-cookie2"))) {
|
||||
if (!IsSystemXHR() && nsContentUtils::IsForbiddenResponseHeader(header)) {
|
||||
NS_WARNING("blocked access to response header");
|
||||
return false;
|
||||
}
|
||||
|
@ -3121,34 +3119,11 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header,
|
|||
// content to override default headers the first time they set them.
|
||||
bool mergeHeaders = true;
|
||||
|
||||
// Prevent modification to certain HTTP headers (see bug 302263), unless
|
||||
// the executing script is privileged.
|
||||
bool isInvalidHeader = false;
|
||||
static const char *kInvalidHeaders[] = {
|
||||
"accept-charset", "accept-encoding", "access-control-request-headers",
|
||||
"access-control-request-method", "connection", "content-length",
|
||||
"cookie", "cookie2", "content-transfer-encoding", "date", "dnt",
|
||||
"expect", "host", "keep-alive", "origin", "referer", "te", "trailer",
|
||||
"transfer-encoding", "upgrade", "user-agent", "via"
|
||||
};
|
||||
uint32_t i;
|
||||
for (i = 0; i < ArrayLength(kInvalidHeaders); ++i) {
|
||||
if (header.LowerCaseEqualsASCII(kInvalidHeaders[i])) {
|
||||
isInvalidHeader = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsSystemXHR()) {
|
||||
// Step 5: Check for dangerous headers.
|
||||
if (isInvalidHeader) {
|
||||
NS_WARNING("refusing to set request header");
|
||||
return NS_OK;
|
||||
}
|
||||
if (StringBeginsWith(header, NS_LITERAL_CSTRING("proxy-"),
|
||||
nsCaseInsensitiveCStringComparator()) ||
|
||||
StringBeginsWith(header, NS_LITERAL_CSTRING("sec-"),
|
||||
nsCaseInsensitiveCStringComparator())) {
|
||||
// Prevent modification to certain HTTP headers (see bug 302263), unless
|
||||
// the executing script is privileged.
|
||||
if (nsContentUtils::IsForbiddenRequestHeader(header)) {
|
||||
NS_WARNING("refusing to set request header");
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -3161,7 +3136,7 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header,
|
|||
"accept", "accept-language", "content-language", "content-type",
|
||||
"last-event-id"
|
||||
};
|
||||
for (i = 0; i < ArrayLength(kCrossOriginSafeHeaders); ++i) {
|
||||
for (uint32_t i = 0; i < ArrayLength(kCrossOriginSafeHeaders); ++i) {
|
||||
if (header.LowerCaseEqualsASCII(kCrossOriginSafeHeaders[i])) {
|
||||
safeHeader = true;
|
||||
break;
|
||||
|
@ -3176,7 +3151,7 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header,
|
|||
}
|
||||
} else {
|
||||
// Case 1 above
|
||||
if (isInvalidHeader) {
|
||||
if (nsContentUtils::IsForbiddenSystemRequestHeader(header)) {
|
||||
mergeHeaders = false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,13 +122,14 @@ protected:
|
|||
{
|
||||
}
|
||||
|
||||
virtual ~nsXHREventTarget() {}
|
||||
|
||||
public:
|
||||
typedef mozilla::dom::XMLHttpRequestResponseType
|
||||
XMLHttpRequestResponseType;
|
||||
typedef mozilla::ErrorResult
|
||||
ErrorResult;
|
||||
|
||||
virtual ~nsXHREventTarget() {}
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsXHREventTarget,
|
||||
mozilla::DOMEventTargetHelper)
|
||||
|
@ -170,6 +171,9 @@ public:
|
|||
{
|
||||
return mListenerManager && mListenerManager->HasListeners();
|
||||
}
|
||||
|
||||
private:
|
||||
virtual ~nsXMLHttpRequestUpload() {}
|
||||
};
|
||||
|
||||
class nsXMLHttpRequestXPCOMifier;
|
||||
|
@ -192,7 +196,6 @@ class nsXMLHttpRequest : public nsXHREventTarget,
|
|||
|
||||
public:
|
||||
nsXMLHttpRequest();
|
||||
virtual ~nsXMLHttpRequest();
|
||||
|
||||
virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE
|
||||
{
|
||||
|
@ -332,6 +335,8 @@ public:
|
|||
nsXMLHttpRequestUpload* Upload();
|
||||
|
||||
private:
|
||||
virtual ~nsXMLHttpRequest();
|
||||
|
||||
class RequestBody
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "WebGLVertexArray.h"
|
||||
#include "WebGLQuery.h"
|
||||
|
||||
#include "GLBlitHelper.h"
|
||||
#include "AccessCheck.h"
|
||||
#include "nsIConsoleService.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
|
@ -28,6 +29,7 @@
|
|||
#include "nsIVariant.h"
|
||||
|
||||
#include "ImageEncoder.h"
|
||||
#include "ImageContainer.h"
|
||||
|
||||
#include "gfxContext.h"
|
||||
#include "gfxPattern.h"
|
||||
|
@ -57,6 +59,7 @@
|
|||
#include "mozilla/Services.h"
|
||||
#include "mozilla/dom/WebGLRenderingContextBinding.h"
|
||||
#include "mozilla/dom/BindingUtils.h"
|
||||
#include "mozilla/dom/HTMLVideoElement.h"
|
||||
#include "mozilla/dom/ImageData.h"
|
||||
#include "mozilla/ProcessPriorityManager.h"
|
||||
#include "mozilla/EnumeratedArrayCycleCollection.h"
|
||||
|
@ -1523,6 +1526,65 @@ WebGLContext::GetSurfaceSnapshot(bool* aPremultAlpha)
|
|||
return dt->Snapshot();
|
||||
}
|
||||
|
||||
bool WebGLContext::TexImageFromVideoElement(GLenum target, GLint level,
|
||||
GLenum internalformat, GLenum format, GLenum type,
|
||||
mozilla::dom::Element& elt)
|
||||
{
|
||||
HTMLVideoElement* video = HTMLVideoElement::FromContentOrNull(&elt);
|
||||
if (!video) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint16_t readyState;
|
||||
if (NS_SUCCEEDED(video->GetReadyState(&readyState)) &&
|
||||
readyState < nsIDOMHTMLMediaElement::HAVE_CURRENT_DATA)
|
||||
{
|
||||
//No frame inside, just return
|
||||
return false;
|
||||
}
|
||||
|
||||
// If it doesn't have a principal, just bail
|
||||
nsCOMPtr<nsIPrincipal> principal = video->GetCurrentPrincipal();
|
||||
if (!principal) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mozilla::layers::ImageContainer* container = video->GetImageContainer();
|
||||
if (!container) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (video->GetCORSMode() == CORS_NONE) {
|
||||
bool subsumes;
|
||||
nsresult rv = mCanvasElement->NodePrincipal()->Subsumes(principal, &subsumes);
|
||||
if (NS_FAILED(rv) || !subsumes) {
|
||||
GenerateWarning("It is forbidden to load a WebGL texture from a cross-domain element that has not been validated with CORS. "
|
||||
"See https://developer.mozilla.org/en/WebGL/Cross-Domain_Textures");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
gl->MakeCurrent();
|
||||
nsRefPtr<mozilla::layers::Image> srcImage = container->LockCurrentImage();
|
||||
WebGLTexture* tex = activeBoundTextureForTarget(target);
|
||||
|
||||
const WebGLTexture::ImageInfo& info = tex->ImageInfoAt(target, 0);
|
||||
bool dimensionsMatch = info.Width() == srcImage->GetSize().width &&
|
||||
info.Height() == srcImage->GetSize().height;
|
||||
if (!dimensionsMatch) {
|
||||
// we need to allocation
|
||||
gl->fTexImage2D(target, level, internalformat, srcImage->GetSize().width, srcImage->GetSize().height, 0, format, type, nullptr);
|
||||
}
|
||||
bool ok = gl->BlitHelper()->BlitImageToTexture(srcImage.get(), srcImage->GetSize(), tex->GLName(), target, mPixelStoreFlipY);
|
||||
if (ok) {
|
||||
tex->SetImageInfo(target, level, srcImage->GetSize().width, srcImage->GetSize().height, format, type, WebGLImageDataStatus::InitializedImageData);
|
||||
tex->Bind(target);
|
||||
}
|
||||
srcImage = nullptr;
|
||||
container->UnlockCurrentImage();
|
||||
return ok;
|
||||
}
|
||||
|
||||
//
|
||||
// XPCOM goop
|
||||
//
|
||||
|
|
|
@ -7,6 +7,11 @@
|
|||
#define WEBGLCONTEXT_H_
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/CheckedInt.h"
|
||||
#include "mozilla/EnumeratedArray.h"
|
||||
#include "mozilla/LinkedList.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
#include "GLDefs.h"
|
||||
#include "WebGLActiveInfo.h"
|
||||
#include "WebGLObjectModel.h"
|
||||
|
@ -26,10 +31,6 @@
|
|||
|
||||
#include "GLContextProvider.h"
|
||||
|
||||
#include "mozilla/EnumeratedArray.h"
|
||||
#include "mozilla/LinkedList.h"
|
||||
#include "mozilla/CheckedInt.h"
|
||||
#include "mozilla/Scoped.h"
|
||||
#include "mozilla/gfx/2D.h"
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
|
@ -79,6 +80,7 @@ class WebGLVertexArray;
|
|||
|
||||
namespace dom {
|
||||
class ImageData;
|
||||
class Element;
|
||||
|
||||
struct WebGLContextAttributes;
|
||||
template<typename> struct Nullable;
|
||||
|
@ -459,6 +461,10 @@ public:
|
|||
dom::ImageData* pixels, ErrorResult& rv);
|
||||
// Allow whatever element types the bindings are willing to pass
|
||||
// us in TexImage2D
|
||||
bool TexImageFromVideoElement(GLenum target, GLint level,
|
||||
GLenum internalformat, GLenum format, GLenum type,
|
||||
mozilla::dom::Element& image);
|
||||
|
||||
template<class ElementType>
|
||||
void TexImage2D(GLenum target, GLint level,
|
||||
GLenum internalformat, GLenum format, GLenum type,
|
||||
|
@ -466,6 +472,17 @@ public:
|
|||
{
|
||||
if (IsContextLost())
|
||||
return;
|
||||
|
||||
WebGLTexture* tex = activeBoundTextureForTarget(target);
|
||||
|
||||
if (!tex)
|
||||
return ErrorInvalidOperation("no texture is bound to this target");
|
||||
|
||||
// Trying to handle the video by GPU directly first
|
||||
if (TexImageFromVideoElement(target, level, internalformat, format, type, elt)) {
|
||||
return;
|
||||
}
|
||||
|
||||
RefPtr<gfx::DataSourceSurface> data;
|
||||
WebGLTexelFormat srcFormat;
|
||||
nsLayoutUtils::SurfaceFromElementResult res = SurfaceFromElement(elt);
|
||||
|
@ -481,6 +498,7 @@ public:
|
|||
0, format, type, data->GetData(), byteLength,
|
||||
-1, srcFormat, mPixelStorePremultiplyAlpha);
|
||||
}
|
||||
|
||||
void TexParameterf(GLenum target, GLenum pname, GLfloat param) {
|
||||
TexParameter_base(target, pname, nullptr, ¶m);
|
||||
}
|
||||
|
@ -506,6 +524,12 @@ public:
|
|||
{
|
||||
if (IsContextLost())
|
||||
return;
|
||||
|
||||
// Trying to handle the video by GPU directly first
|
||||
if (TexImageFromVideoElement(target, level, format, format, type, elt)) {
|
||||
return;
|
||||
}
|
||||
|
||||
RefPtr<gfx::DataSourceSurface> data;
|
||||
WebGLTexelFormat srcFormat;
|
||||
nsLayoutUtils::SurfaceFromElementResult res = SurfaceFromElement(elt);
|
||||
|
@ -1207,16 +1231,16 @@ protected:
|
|||
GLuint GLName() const { return mGLName; }
|
||||
};
|
||||
|
||||
ScopedDeletePtr<FakeBlackTexture> mBlackOpaqueTexture2D,
|
||||
mBlackOpaqueTextureCubeMap,
|
||||
mBlackTransparentTexture2D,
|
||||
mBlackTransparentTextureCubeMap;
|
||||
UniquePtr<FakeBlackTexture> mBlackOpaqueTexture2D,
|
||||
mBlackOpaqueTextureCubeMap,
|
||||
mBlackTransparentTexture2D,
|
||||
mBlackTransparentTextureCubeMap;
|
||||
|
||||
void BindFakeBlackTexturesHelper(
|
||||
GLenum target,
|
||||
const nsTArray<WebGLRefPtr<WebGLTexture> >& boundTexturesArray,
|
||||
ScopedDeletePtr<FakeBlackTexture> & opaqueTextureScopedPtr,
|
||||
ScopedDeletePtr<FakeBlackTexture> & transparentTextureScopedPtr);
|
||||
UniquePtr<FakeBlackTexture> & opaqueTextureScopedPtr,
|
||||
UniquePtr<FakeBlackTexture> & transparentTextureScopedPtr);
|
||||
|
||||
GLfloat mVertexAttrib0Vector[4];
|
||||
GLfloat mFakeVertexAttrib0BufferObjectVector[4];
|
||||
|
|
|
@ -627,8 +627,8 @@ void
|
|||
WebGLContext::BindFakeBlackTexturesHelper(
|
||||
GLenum target,
|
||||
const nsTArray<WebGLRefPtr<WebGLTexture> > & boundTexturesArray,
|
||||
ScopedDeletePtr<FakeBlackTexture> & opaqueTextureScopedPtr,
|
||||
ScopedDeletePtr<FakeBlackTexture> & transparentTextureScopedPtr)
|
||||
UniquePtr<FakeBlackTexture> & opaqueTextureScopedPtr,
|
||||
UniquePtr<FakeBlackTexture> & transparentTextureScopedPtr)
|
||||
{
|
||||
for (int32_t i = 0; i < mGLMaxTextureUnits; ++i) {
|
||||
if (!boundTexturesArray[i]) {
|
||||
|
@ -644,15 +644,14 @@ WebGLContext::BindFakeBlackTexturesHelper(
|
|||
|
||||
bool alpha = s == WebGLTextureFakeBlackStatus::UninitializedImageData &&
|
||||
FormatHasAlpha(boundTexturesArray[i]->ImageInfoBase().WebGLFormat());
|
||||
ScopedDeletePtr<FakeBlackTexture>&
|
||||
UniquePtr<FakeBlackTexture>&
|
||||
blackTexturePtr = alpha
|
||||
? transparentTextureScopedPtr
|
||||
: opaqueTextureScopedPtr;
|
||||
|
||||
if (!blackTexturePtr) {
|
||||
GLenum format = alpha ? LOCAL_GL_RGBA : LOCAL_GL_RGB;
|
||||
blackTexturePtr
|
||||
= new FakeBlackTexture(gl, target, format);
|
||||
blackTexturePtr = MakeUnique<FakeBlackTexture>(gl, target, format);
|
||||
}
|
||||
|
||||
gl->fActiveTexture(LOCAL_GL_TEXTURE0 + i);
|
||||
|
|
|
@ -22,7 +22,6 @@ class HTMLAudioElement MOZ_FINAL : public HTMLMediaElement,
|
|||
{
|
||||
public:
|
||||
HTMLAudioElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLAudioElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -43,6 +42,8 @@ public:
|
|||
const Optional<nsAString>& aSrc, ErrorResult& aRv);
|
||||
|
||||
protected:
|
||||
virtual ~HTMLAudioElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE;
|
||||
};
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ class HTMLCanvasElement MOZ_FINAL : public nsGenericHTMLElement,
|
|||
|
||||
public:
|
||||
HTMLCanvasElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLCanvasElement();
|
||||
|
||||
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLCanvasElement, canvas)
|
||||
|
||||
|
@ -208,6 +207,8 @@ public:
|
|||
nsresult GetContext(const nsAString& aContextId, nsISupports** aContext);
|
||||
|
||||
protected:
|
||||
virtual ~HTMLCanvasElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE;
|
||||
|
||||
nsIntSize GetWidthHeight();
|
||||
|
|
|
@ -90,7 +90,6 @@ public:
|
|||
}
|
||||
|
||||
HTMLMediaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLMediaElement();
|
||||
|
||||
/**
|
||||
* This is used when the browser is constructing a video element to play
|
||||
|
@ -597,6 +596,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual ~HTMLMediaElement();
|
||||
|
||||
class MediaLoadListener;
|
||||
class StreamListener;
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ class HTMLVideoElement MOZ_FINAL : public HTMLMediaElement,
|
|||
{
|
||||
public:
|
||||
HTMLVideoElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLVideoElement();
|
||||
|
||||
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLVideoElement, video)
|
||||
|
||||
|
@ -109,6 +108,8 @@ public:
|
|||
already_AddRefed<VideoPlaybackQuality> GetVideoPlaybackQuality();
|
||||
|
||||
protected:
|
||||
virtual ~HTMLVideoElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE;
|
||||
|
||||
virtual void WakeLockCreate();
|
||||
|
|
|
@ -31,7 +31,6 @@ public:
|
|||
, Link(MOZ_THIS_IN_INITIALIZER_LIST())
|
||||
{
|
||||
}
|
||||
virtual ~HTMLAnchorElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -199,6 +198,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual ~HTMLAnchorElement();
|
||||
|
||||
virtual void GetItemValueText(nsAString& text) MOZ_OVERRIDE;
|
||||
virtual void SetItemValueText(const nsAString& text) MOZ_OVERRIDE;
|
||||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
|
|
|
@ -28,7 +28,6 @@ class HTMLAreaElement MOZ_FINAL : public nsGenericHTMLElement,
|
|||
{
|
||||
public:
|
||||
HTMLAreaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLAreaElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -173,6 +172,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual ~HTMLAreaElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE;
|
||||
|
||||
virtual void GetItemValueText(nsAString& text) MOZ_OVERRIDE;
|
||||
|
|
|
@ -19,7 +19,6 @@ class HTMLBRElement MOZ_FINAL : public nsGenericHTMLElement,
|
|||
{
|
||||
public:
|
||||
HTMLBRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLBRElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -47,6 +46,8 @@ public:
|
|||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
virtual ~HTMLBRElement();
|
||||
|
||||
static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
|
||||
nsRuleData* aData);
|
||||
};
|
||||
|
|
|
@ -45,7 +45,6 @@ public:
|
|||
: nsGenericHTMLElement(aNodeInfo)
|
||||
{
|
||||
}
|
||||
virtual ~HTMLBodyElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -133,6 +132,8 @@ public:
|
|||
virtual bool IsEventAttributeName(nsIAtom* aName) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLBodyElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
|
||||
nsRefPtr<BodyRule> mContentStyleRule;
|
||||
|
|
|
@ -25,7 +25,6 @@ public:
|
|||
|
||||
HTMLButtonElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
|
||||
FromParser aFromParser = NOT_FROM_PARSER);
|
||||
virtual ~HTMLButtonElement();
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLButtonElement,
|
||||
nsGenericHTMLFormElementWithState)
|
||||
|
@ -162,6 +161,8 @@ public:
|
|||
// nsIConstraintValidation::SetCustomValidity() is fine.
|
||||
|
||||
protected:
|
||||
virtual ~HTMLButtonElement();
|
||||
|
||||
uint8_t mType;
|
||||
bool mDisabledChanged;
|
||||
bool mInInternalActivate;
|
||||
|
|
|
@ -20,7 +20,6 @@ class HTMLContentElement MOZ_FINAL : public nsGenericHTMLElement
|
|||
{
|
||||
public:
|
||||
HTMLContentElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLContentElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -70,6 +69,8 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
virtual ~HTMLContentElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,7 +18,6 @@ class HTMLDataElement MOZ_FINAL : public nsGenericHTMLElement
|
|||
{
|
||||
public:
|
||||
HTMLDataElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
virtual ~HTMLDataElement();
|
||||
|
||||
// HTMLDataElement WebIDL
|
||||
void GetValue(nsAString& aValue)
|
||||
|
@ -36,6 +35,8 @@ public:
|
|||
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
virtual ~HTMLDataElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext* aCx) MOZ_OVERRIDE;
|
||||
};
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ public:
|
|||
: nsGenericHTMLElement(aNodeInfo)
|
||||
{
|
||||
}
|
||||
virtual ~HTMLDataListElement();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
@ -43,6 +42,8 @@ public:
|
|||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLDataListElement,
|
||||
nsGenericHTMLElement)
|
||||
protected:
|
||||
virtual ~HTMLDataListElement();
|
||||
|
||||
virtual JSObject* WrapNode(JSContext *aCx) MOZ_OVERRIDE;
|
||||
|
||||
// <option>'s list inside the datalist element.
|
||||
|
|