Fix bug 532730. r=jst sr=sicking

--HG--
extra : rebase_source : 0188a1388b4c82a55d29a54e08c91568b1ff817f
This commit is contained in:
Blake Kaplan 2010-04-27 15:39:52 -07:00
Родитель fa771f1b02
Коммит 750a8cd9a4
6 изменённых файлов: 85 добавлений и 1 удалений

Просмотреть файл

@ -53,6 +53,7 @@ nsIContentIterator.h \
nsContentErrors.h \
nsContentPolicyUtils.h \
nsContentUtils.h \
nsIContentUtils.h \
nsIDocument.h \
nsIDocumentObserver.h \
nsIMutationObserver.h \

Просмотреть файл

@ -0,0 +1,56 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Mozilla Foundation.
* Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsIContentUtils_h__
#define nsIContentUtils_h__
// C4EA618E-A3D9-4524-8EEA-E92F26FC44DB
#define NS_ICONTENTUTILS_IID \
{ 0xC4EA618E, 0xA3D9, 0x4524, \
{ 0x8E, 0xEA, 0xE9, 0x2F, 0x26, 0xFC, 0x44, 0xDB } }
class nsIContentUtils : public nsISupports
{
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICONTENTUTILS_IID)
NS_DECL_ISUPPORTS
virtual PRBool IsSafeToRunScript();
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIContentUtils, NS_ICONTENTUTILS_IID)
#endif /* nsIContentUtils_h__ */

Просмотреть файл

@ -58,6 +58,7 @@
#include "nsIDOMScriptObjectFactory.h"
#include "nsDOMCID.h"
#include "nsContentUtils.h"
#include "nsIContentUtils.h"
#include "nsIXPConnect.h"
#include "nsIContent.h"
#include "nsIDocument.h"
@ -5424,7 +5425,7 @@ nsContentUtils::StripNullChars(const nsAString& aInStr, nsAString& aOutStr)
namespace {
const int kCloneStackFrameStackSize = 20;
const size_t kCloneStackFrameStackSize = 20;
class CloneStackFrame
{
@ -6010,3 +6011,10 @@ void nsContentUtils::PlatformToDOMLineBreaks(nsString &aString)
}
}
NS_IMPL_ISUPPORTS1(nsIContentUtils, nsIContentUtils)
PRBool
nsIContentUtils::IsSafeToRunScript()
{
return nsContentUtils::IsSafeToRunScript();
}

Просмотреть файл

@ -48,6 +48,7 @@
#include "nsPromptService.h"
#include "nsWWJSUtils.h"
#include "plstr.h"
#include "nsIContentUtils.h"
#include "nsIBaseWindow.h"
#include "nsIDocShell.h"
@ -517,6 +518,12 @@ nsWindowWatcher::OpenWindowJSInternal(nsIDOMWindow *aParent,
NS_ENSURE_ARG_POINTER(_retval);
*_retval = 0;
nsCOMPtr<nsIContentUtils> utils =
do_GetService("@mozilla.org/content/contentutils;1");
if (!utils->IsSafeToRunScript()) {
return NS_ERROR_FAILURE;
}
GetWindowTreeOwner(aParent, getter_AddRefs(parentTreeOwner));
if (aUrl) {

Просмотреть файл

@ -238,6 +238,10 @@
#define NS_FOCUSMANAGER_CID \
{ 0xcf7fd51f, 0xaba2, 0x44c1, { 0x9f, 0xf0, 0x11, 0xf7, 0x50, 0x8e, 0xfc, 0xd4 } }
// {762C4AE7-B923-422F-B97E-B9BFC1EF7BF0}
#define NS_ICONTENTUTILS_CID \
{ 0x762C4AE7, 0xB923, 0x422F, { 0xB9, 0x7E, 0xB9, 0xBF, 0xC1, 0xEF, 0x7B, 0xF0 } }
#ifdef MOZ_MEDIA
#define NS_HTMLAUDIOELEMENT_CID \
{ /* 1d40026b-4c44-4f6f-b158-26bb5e9c65e9 */ \

Просмотреть файл

@ -94,6 +94,7 @@
#include "nsStyleSheetService.h"
#include "nsXULPopupManager.h"
#include "nsFocusManager.h"
#include "nsIContentUtils.h"
#include "nsIEventListenerService.h"
// Transformiix stuff
@ -535,6 +536,8 @@ MAKE_CTOR(CreateVideoDocument, nsIDocument, NS_NewVid
#endif
MAKE_CTOR(CreateFocusManager, nsIFocusManager, NS_NewFocusManager)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsIContentUtils)
MAKE_CTOR(CreateCanvasRenderingContext2D, nsIDOMCanvasRenderingContext2D, NS_NewCanvasRenderingContext2D)
MAKE_CTOR(CreateCanvasRenderingContextWebGL, nsICanvasRenderingContextWebGL, NS_NewCanvasRenderingContextWebGL)
@ -1517,6 +1520,11 @@ static const nsModuleComponentInfo gComponents[] = {
"@mozilla.org/focus-manager;1",
CreateFocusManager },
{ "Content Utils",
NS_ICONTENTUTILS_CID,
"@mozilla.org/content/contentutils;1",
nsIContentUtilsConstructor },
{ "Content Security Policy Service",
CSPSERVICE_CID,
CSPSERVICE_CONTRACTID,