зеркало из https://github.com/mozilla/pjs.git
Merge backout of bug 622480
This commit is contained in:
Коммит
3ab000ad6e
|
@ -948,8 +948,10 @@ pref("dom.ipc.plugins.enabled.i386.flash player.plugin", true);
|
|||
pref("dom.ipc.plugins.enabled.i386.javaplugin2_npapi.plugin", true);
|
||||
// x86_64 ipc preferences
|
||||
pref("dom.ipc.plugins.enabled.x86_64", true);
|
||||
#else
|
||||
#elifdef MOZ_IPC
|
||||
pref("dom.ipc.plugins.enabled", true);
|
||||
#else
|
||||
pref("dom.ipc.plugins.enabled", false);
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
|
|
|
@ -94,6 +94,7 @@ DEFINES += -DMOZ_D3DX9_DLL=$(MOZ_D3DX9_DLL)
|
|||
DEFINES += -DMOZ_D3DCOMPILER_DLL=$(MOZ_D3DCOMPILER_DLL)
|
||||
endif
|
||||
|
||||
# Don't ifdef MOZ_IPC this because mac ppc needs it too.
|
||||
include $(topsrcdir)/ipc/app/defs.mk
|
||||
DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
|
||||
|
||||
|
|
|
@ -51,11 +51,13 @@
|
|||
#else
|
||||
@BINPATH@/@DLL_PREFIX@xul@DLL_SUFFIX@
|
||||
#endif
|
||||
#ifdef MOZ_IPC
|
||||
#ifdef XP_MACOSX
|
||||
@BINPATH@/@MOZ_CHILD_PROCESS_NAME@.app/
|
||||
#else
|
||||
@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
|
||||
#endif
|
||||
#endif
|
||||
#ifdef WINCE
|
||||
@BINPATH@/mozce_shunt.dll
|
||||
#elifdef XP_WIN32
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
!define AppName "Firefox"
|
||||
!define AppVersion "@APP_VERSION@"
|
||||
#ifdef HAVE_64BIT_OS
|
||||
// differentiate 64-bit builds, we do the same in widget.
|
||||
; differentiate 64-bit builds, we do the same in widget.
|
||||
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}.Win64"
|
||||
#else
|
||||
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}"
|
||||
|
|
|
@ -58,9 +58,12 @@ CPPSRCS = \
|
|||
nsChromeRegistry.cpp \
|
||||
nsChromeRegistryChrome.cpp \
|
||||
nsChromeProtocolHandler.cpp \
|
||||
nsChromeRegistryContent.cpp \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
CPPSRCS += nsChromeRegistryContent.cpp
|
||||
endif
|
||||
|
||||
EXTRA_DSO_LDOPTS = \
|
||||
$(MOZ_UNICHARUTIL_LIBS) \
|
||||
$(MOZ_COMPONENT_LIBS) \
|
||||
|
|
|
@ -41,7 +41,9 @@
|
|||
|
||||
#include "nsChromeRegistry.h"
|
||||
#include "nsChromeRegistryChrome.h"
|
||||
#ifdef MOZ_IPC
|
||||
#include "nsChromeRegistryContent.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
@ -675,9 +677,11 @@ nsChromeRegistry::GetSingleton()
|
|||
}
|
||||
|
||||
nsRefPtr<nsChromeRegistry> cr;
|
||||
#ifdef MOZ_IPC
|
||||
if (GeckoProcessType_Content == XRE_GetProcessType())
|
||||
cr = new nsChromeRegistryContent();
|
||||
else
|
||||
#endif
|
||||
cr = new nsChromeRegistryChrome();
|
||||
|
||||
if (NS_FAILED(cr->Init()))
|
||||
|
|
|
@ -36,9 +36,11 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/dom/PContentParent.h"
|
||||
#include "RegistryMessageUtils.h"
|
||||
#include "nsResProtocolHandler.h"
|
||||
#endif
|
||||
|
||||
#include "nsChromeRegistryChrome.h"
|
||||
|
||||
|
@ -441,6 +443,7 @@ void nsChromeRegistryChrome::UpdateSelectedLocale()
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
static void
|
||||
SerializeURI(nsIURI* aURI,
|
||||
SerializedURI& aSerializedURI)
|
||||
|
@ -538,6 +541,7 @@ nsChromeRegistryChrome::CollectPackages(PLDHashTable *table,
|
|||
args->packages.AppendElement(chromePackage);
|
||||
return (PLDHashOperator)PL_DHASH_NEXT;
|
||||
}
|
||||
#endif
|
||||
|
||||
static PRBool
|
||||
CanLoadResource(nsIURI* aResourceURI)
|
||||
|
|
|
@ -75,12 +75,16 @@ class nsChromeRegistryChrome : public nsChromeRegistry
|
|||
nsISimpleEnumerator **_retval);
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
void SendRegisteredChrome(mozilla::dom::PContentParent* aChild);
|
||||
#endif
|
||||
|
||||
private:
|
||||
#ifdef MOZ_IPC
|
||||
static PLDHashOperator CollectPackages(PLDHashTable *table,
|
||||
PLDHashEntryHdr *entry,
|
||||
PRUint32 number, void *arg);
|
||||
#endif
|
||||
|
||||
nsresult SelectLocaleFromPref(nsIPrefBranch* prefs);
|
||||
NS_OVERRIDE void UpdateSelectedLocale();
|
||||
|
|
|
@ -47,9 +47,11 @@ MODULE = test_chrome
|
|||
|
||||
XPCSHELL_TESTS = unit \
|
||||
$(NULL)
|
||||
ifdef MOZ_IPC
|
||||
# FIXME/bug 575918: out-of-process xpcshell is broken on OS X
|
||||
ifneq ($(OS_ARCH),Darwin)
|
||||
XPCSHELL_TESTS += unit_ipc
|
||||
endif
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
|
|
@ -102,6 +102,7 @@ MOZ_DEBUG_FLAGS = @MOZ_DEBUG_FLAGS@
|
|||
MOZ_DEBUG_LDFLAGS=@MOZ_DEBUG_LDFLAGS@
|
||||
MOZ_EXTENSIONS = @MOZ_EXTENSIONS@
|
||||
MOZ_JSDEBUGGER = @MOZ_JSDEBUGGER@
|
||||
MOZ_IPC = @MOZ_IPC@
|
||||
MOZ_IPDL_TESTS = @MOZ_IPDL_TESTS@
|
||||
MOZ_LEAKY = @MOZ_LEAKY@
|
||||
MOZ_MEMORY = @MOZ_MEMORY@
|
||||
|
|
16
configure.in
16
configure.in
|
@ -4950,6 +4950,7 @@ MOZ_BRANDING_DIRECTORY=
|
|||
MOZ_OFFICIAL_BRANDING=
|
||||
MOZ_FEEDS=1
|
||||
MOZ_INSTALLER=1
|
||||
MOZ_IPC=1
|
||||
MOZ_JAVAXPCOM=
|
||||
MOZ_JSDEBUGGER=1
|
||||
MOZ_MATHML=1
|
||||
|
@ -5821,6 +5822,21 @@ MOZ_ARG_DISABLE_BOOL(jsd,
|
|||
MOZ_JSDEBUGGER=1)
|
||||
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Disable IPC support for tabs and plugins
|
||||
dnl ========================================================
|
||||
MOZ_ARG_DISABLE_BOOL(ipc,
|
||||
[ --disable-ipc Disable IPC for tabs and plugins (not supported)],
|
||||
MOZ_IPC=,
|
||||
MOZ_IPC=1)
|
||||
|
||||
if test -z "$MOZ_IPC"; then
|
||||
AC_MSG_ERROR([--disable-ipc is no longer supported.])
|
||||
fi
|
||||
|
||||
AC_DEFINE(MOZ_IPC)
|
||||
AC_SUBST(MOZ_IPC)
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Enable IPDL's "expensive" unit tests
|
||||
dnl ========================================================
|
||||
|
|
|
@ -178,9 +178,14 @@ EXTRA_COMPONENTS = \
|
|||
contentSecurityPolicy.manifest \
|
||||
contentAreaDropListener.js \
|
||||
contentAreaDropListener.manifest \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
EXTRA_COMPONENTS += \
|
||||
messageWakeupService.js \
|
||||
messageWakeupService.manifest \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
EXTRA_JS_MODULES = \
|
||||
CSPUtils.jsm \
|
||||
|
|
|
@ -8350,10 +8350,12 @@ PLDHashOperator UnlockEnumerator(imgIRequest* aKey,
|
|||
nsresult
|
||||
nsDocument::SetImageLockingState(PRBool aLocked)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Content &&
|
||||
!nsContentUtils::GetBoolPref("content.image.allow_locking", PR_TRUE)) {
|
||||
return NS_OK;
|
||||
}
|
||||
#endif // MOZ_IPC
|
||||
|
||||
// If there's no change, there's nothing to do.
|
||||
if (mLockingImages == aLocked)
|
||||
|
|
|
@ -44,7 +44,9 @@
|
|||
* handling of loads in it, recursion-checking).
|
||||
*/
|
||||
|
||||
#include "base/basictypes.h"
|
||||
#ifdef MOZ_IPC
|
||||
# include "base/basictypes.h"
|
||||
#endif
|
||||
|
||||
#include "prenv.h"
|
||||
|
||||
|
@ -110,12 +112,15 @@
|
|||
|
||||
#include "Layers.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "ContentParent.h"
|
||||
#include "TabParent.h"
|
||||
#include "mozilla/layout/RenderFrameParent.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::dom;
|
||||
#endif
|
||||
|
||||
using namespace mozilla::layers;
|
||||
typedef FrameMetrics::ViewID ViewID;
|
||||
|
||||
|
@ -319,11 +324,13 @@ nsFrameLoader::nsFrameLoader(nsIContent *aOwner, PRBool aNetworkCreated)
|
|||
, mInShow(PR_FALSE)
|
||||
, mHideCalled(PR_FALSE)
|
||||
, mNetworkCreated(aNetworkCreated)
|
||||
#ifdef MOZ_IPC
|
||||
, mDelayRemoteDialogs(PR_FALSE)
|
||||
, mRemoteBrowserShown(PR_FALSE)
|
||||
, mRemoteFrame(false)
|
||||
, mCurrentRemoteFrame(nsnull)
|
||||
, mRemoteBrowser(nsnull)
|
||||
#endif
|
||||
, mRenderMode(RENDER_MODE_DEFAULT)
|
||||
{
|
||||
}
|
||||
|
@ -441,6 +448,7 @@ nsFrameLoader::ReallyStartLoadingInternal()
|
|||
return rv;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteFrame) {
|
||||
if (!mRemoteBrowser) {
|
||||
TryRemoteBrowser();
|
||||
|
@ -455,6 +463,7 @@ nsFrameLoader::ReallyStartLoadingInternal()
|
|||
mRemoteBrowser->LoadURL(mURIToLoad);
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_ASSERTION(mDocShell,
|
||||
"MaybeCreateDocShell succeeded with a null mDocShell");
|
||||
|
@ -525,9 +534,11 @@ nsFrameLoader::CheckURILoad(nsIURI* aURI)
|
|||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteFrame) {
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
return CheckForRecursiveLoad(aURI);
|
||||
}
|
||||
|
||||
|
@ -543,10 +554,12 @@ nsFrameLoader::GetDocShell(nsIDocShell **aDocShell)
|
|||
nsresult rv = MaybeCreateDocShell();
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteFrame) {
|
||||
NS_WARNING("No docshells for remote frames!");
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
#endif
|
||||
NS_ASSERTION(mDocShell,
|
||||
"MaybeCreateDocShell succeeded, but null mDocShell");
|
||||
}
|
||||
|
@ -763,7 +776,10 @@ nsFrameLoader::Show(PRInt32 marginWidth, PRInt32 marginHeight,
|
|||
return PR_FALSE;
|
||||
}
|
||||
|
||||
if (!mRemoteFrame) {
|
||||
#ifdef MOZ_IPC
|
||||
if (!mRemoteFrame)
|
||||
#endif
|
||||
{
|
||||
if (!mDocShell)
|
||||
return PR_FALSE;
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
|
@ -787,9 +803,11 @@ nsFrameLoader::Show(PRInt32 marginWidth, PRInt32 marginHeight,
|
|||
if (!view)
|
||||
return PR_FALSE;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteFrame) {
|
||||
return ShowRemoteFrame(GetSubDocumentSize(frame));
|
||||
}
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(mDocShell);
|
||||
NS_ASSERTION(baseWindow, "Found a nsIDocShell that isn't a nsIBaseWindow.");
|
||||
|
@ -862,6 +880,7 @@ nsFrameLoader::Show(PRInt32 marginWidth, PRInt32 marginHeight,
|
|||
return PR_TRUE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool
|
||||
nsFrameLoader::ShowRemoteFrame(const nsIntSize& size)
|
||||
{
|
||||
|
@ -890,6 +909,7 @@ nsFrameLoader::ShowRemoteFrame(const nsIntSize& size)
|
|||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
nsFrameLoader::Hide()
|
||||
|
@ -1214,11 +1234,13 @@ nsFrameLoader::SwapWithOtherLoader(nsFrameLoader* aOther,
|
|||
void
|
||||
nsFrameLoader::DestroyChild()
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteBrowser) {
|
||||
mRemoteBrowser->SetOwnerElement(nsnull);
|
||||
mRemoteBrowser->Destroy();
|
||||
mRemoteBrowser = nsnull;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -1305,11 +1327,14 @@ void
|
|||
nsFrameLoader::SetOwnerContent(nsIContent* aContent)
|
||||
{
|
||||
mOwnerContent = aContent;
|
||||
#ifdef MOZ_IPC
|
||||
if (RenderFrameParent* rfp = GetCurrentRemoteFrame()) {
|
||||
rfp->OwnerContentChanged(aContent);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool
|
||||
nsFrameLoader::ShouldUseRemoteProcess()
|
||||
{
|
||||
|
@ -1345,6 +1370,7 @@ nsFrameLoader::ShouldUseRemoteProcess()
|
|||
PR_FALSE);
|
||||
return (bool) remoteEnabled;
|
||||
}
|
||||
#endif
|
||||
|
||||
nsresult
|
||||
nsFrameLoader::MaybeCreateDocShell()
|
||||
|
@ -1352,15 +1378,19 @@ nsFrameLoader::MaybeCreateDocShell()
|
|||
if (mDocShell) {
|
||||
return NS_OK;
|
||||
}
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteFrame) {
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
NS_ENSURE_STATE(!mDestroyCalled);
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (ShouldUseRemoteProcess()) {
|
||||
mRemoteFrame = true;
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Get our parent docshell off the document of mOwnerContent
|
||||
// XXXbz this is such a total hack.... We really need to have a
|
||||
|
@ -1509,8 +1539,10 @@ nsFrameLoader::CheckForRecursiveLoad(nsIURI* aURI)
|
|||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
#ifdef MOZ_IPC
|
||||
NS_ASSERTION(!mRemoteFrame,
|
||||
"Shouldn't call CheckForRecursiveLoad on remote frames.");
|
||||
#endif
|
||||
if (!mDocShell) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
@ -1610,6 +1642,7 @@ nsFrameLoader::CheckForRecursiveLoad(nsIURI* aURI)
|
|||
NS_IMETHODIMP
|
||||
nsFrameLoader::UpdatePositionAndSize(nsIFrame *aIFrame)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteFrame) {
|
||||
if (mRemoteBrowser) {
|
||||
nsIntSize size = GetSubDocumentSize(aIFrame);
|
||||
|
@ -1617,6 +1650,7 @@ nsFrameLoader::UpdatePositionAndSize(nsIFrame *aIFrame)
|
|||
}
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
return UpdateBaseWindowPositionAndSize(aIFrame);
|
||||
}
|
||||
|
||||
|
@ -1684,6 +1718,7 @@ nsFrameLoader::GetSubDocumentSize(const nsIFrame *aIFrame)
|
|||
presContext->AppUnitsToDevPixels(docSizeAppUnits.height));
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool
|
||||
nsFrameLoader::TryRemoteBrowser()
|
||||
{
|
||||
|
@ -1763,19 +1798,24 @@ nsFrameLoader::TryRemoteBrowser()
|
|||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
mozilla::dom::PBrowserParent*
|
||||
nsFrameLoader::GetRemoteBrowser()
|
||||
{
|
||||
return mRemoteBrowser;
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFrameLoader::ActivateRemoteFrame() {
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteBrowser) {
|
||||
mRemoteBrowser->Activate();
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
|
@ -1788,12 +1828,14 @@ nsFrameLoader::SendCrossProcessMouseEvent(const nsAString& aType,
|
|||
PRInt32 aModifiers,
|
||||
PRBool aIgnoreRootScrollFrame)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteBrowser) {
|
||||
mRemoteBrowser->SendMouseEvent(aType, aX, aY, aButton,
|
||||
aClickCount, aModifiers,
|
||||
aIgnoreRootScrollFrame);
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
@ -1801,10 +1843,12 @@ NS_IMETHODIMP
|
|||
nsFrameLoader::ActivateFrameEvent(const nsAString& aType,
|
||||
PRBool aCapture)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteBrowser) {
|
||||
return mRemoteBrowser->SendActivateFrameEvent(nsString(aType), aCapture) ?
|
||||
NS_OK : NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
#endif
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
@ -1815,24 +1859,31 @@ nsFrameLoader::SendCrossProcessKeyEvent(const nsAString& aType,
|
|||
PRInt32 aModifiers,
|
||||
PRBool aPreventDefault)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteBrowser) {
|
||||
mRemoteBrowser->SendKeyEvent(aType, aKeyCode, aCharCode, aModifiers,
|
||||
aPreventDefault);
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFrameLoader::GetDelayRemoteDialogs(PRBool* aRetVal)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
*aRetVal = mDelayRemoteDialogs;
|
||||
#else
|
||||
*aRetVal = PR_FALSE;
|
||||
#endif
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsFrameLoader::SetDelayRemoteDialogs(PRBool aDelay)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (mRemoteBrowser && mDelayRemoteDialogs && !aDelay) {
|
||||
nsRefPtr<nsIRunnable> ev =
|
||||
NS_NewRunnableMethod(mRemoteBrowser,
|
||||
|
@ -1840,6 +1891,7 @@ nsFrameLoader::SetDelayRemoteDialogs(PRBool aDelay)
|
|||
NS_DispatchToCurrentThread(ev);
|
||||
}
|
||||
mDelayRemoteDialogs = aDelay;
|
||||
#endif
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -1870,11 +1922,13 @@ nsFrameLoader::CreateStaticClone(nsIFrameLoader* aDest)
|
|||
|
||||
bool LoadScript(void* aCallbackData, const nsAString& aURL)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
mozilla::dom::PBrowserParent* tabParent =
|
||||
static_cast<nsFrameLoader*>(aCallbackData)->GetRemoteBrowser();
|
||||
if (tabParent) {
|
||||
return tabParent->SendLoadRemoteScript(nsString(aURL));
|
||||
}
|
||||
#endif
|
||||
nsFrameLoader* fl = static_cast<nsFrameLoader*>(aCallbackData);
|
||||
nsRefPtr<nsInProcessTabChildGlobal> tabChild =
|
||||
static_cast<nsInProcessTabChildGlobal*>(fl->GetTabChildGlobalAsEventTarget());
|
||||
|
@ -1911,11 +1965,13 @@ bool SendAsyncMessageToChild(void* aCallbackData,
|
|||
const nsAString& aMessage,
|
||||
const nsAString& aJSON)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
mozilla::dom::PBrowserParent* tabParent =
|
||||
static_cast<nsFrameLoader*>(aCallbackData)->GetRemoteBrowser();
|
||||
if (tabParent) {
|
||||
return tabParent->SendAsyncMessage(nsString(aMessage), nsString(aJSON));
|
||||
}
|
||||
#endif
|
||||
nsRefPtr<nsIRunnable> ev =
|
||||
new nsAsyncMessageToChild(static_cast<nsFrameLoader*>(aCallbackData),
|
||||
aMessage, aJSON);
|
||||
|
@ -1940,6 +1996,7 @@ nsFrameLoader::GetContentViewsIn(float aXPx, float aYPx,
|
|||
PRUint32* aLength,
|
||||
nsIContentView*** aResult)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
nscoord x = nsPresContext::CSSPixelsToAppUnits(aXPx - aLeftSize);
|
||||
nscoord y = nsPresContext::CSSPixelsToAppUnits(aYPx - aTopSize);
|
||||
nscoord w = nsPresContext::CSSPixelsToAppUnits(aLeftSize + aRightSize) + 1;
|
||||
|
@ -1967,6 +2024,10 @@ nsFrameLoader::GetContentViewsIn(float aXPx, float aYPx,
|
|||
|
||||
*aResult = result;
|
||||
*aLength = ids.Length();
|
||||
#else
|
||||
*aResult = nsnull;
|
||||
*aLength = 0;
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1974,6 +2035,7 @@ nsFrameLoader::GetContentViewsIn(float aXPx, float aYPx,
|
|||
NS_IMETHODIMP
|
||||
nsFrameLoader::GetRootContentView(nsIContentView** aContentView)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
RenderFrameParent* rfp = GetCurrentRemoteFrame();
|
||||
if (!rfp) {
|
||||
*aContentView = nsnull;
|
||||
|
@ -1985,6 +2047,10 @@ nsFrameLoader::GetRootContentView(nsIContentView** aContentView)
|
|||
nsRefPtr<nsIContentView>(view).forget(aContentView);
|
||||
|
||||
return NS_OK;
|
||||
#else
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -1997,14 +2063,20 @@ nsFrameLoader::EnsureMessageManager()
|
|||
return rv;
|
||||
}
|
||||
|
||||
if (!mIsTopLevelContent && !mRemoteFrame) {
|
||||
if (!mIsTopLevelContent
|
||||
#ifdef MOZ_IPC
|
||||
&& !mRemoteFrame
|
||||
#endif
|
||||
) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (mMessageManager) {
|
||||
#ifdef MOZ_IPC
|
||||
if (ShouldUseRemoteProcess()) {
|
||||
mMessageManager->SetCallbackData(mRemoteBrowserShown ? this : nsnull);
|
||||
}
|
||||
#endif
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -2020,6 +2092,7 @@ nsFrameLoader::EnsureMessageManager()
|
|||
nsCOMPtr<nsIChromeFrameMessageManager> parentManager;
|
||||
chromeWindow->GetMessageManager(getter_AddRefs(parentManager));
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (ShouldUseRemoteProcess()) {
|
||||
mMessageManager = new nsFrameMessageManager(PR_TRUE,
|
||||
nsnull,
|
||||
|
@ -2030,6 +2103,7 @@ nsFrameLoader::EnsureMessageManager()
|
|||
cx);
|
||||
NS_ENSURE_TRUE(mMessageManager, NS_ERROR_OUT_OF_MEMORY);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
|
||||
mMessageManager = new nsFrameMessageManager(PR_TRUE,
|
||||
|
|
|
@ -61,6 +61,7 @@ class nsIView;
|
|||
class nsIInProcessContentFrameMessageManager;
|
||||
class AutoResetInShow;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
class PBrowserParent;
|
||||
|
@ -78,6 +79,7 @@ typedef struct _GtkWidget GtkWidget;
|
|||
#ifdef MOZ_WIDGET_QT
|
||||
class QX11EmbedContainer;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Defines a target configuration for this <browser>'s content
|
||||
|
@ -165,9 +167,11 @@ class nsFrameLoader : public nsIFrameLoader,
|
|||
public nsIContentViewManager
|
||||
{
|
||||
friend class AutoResetInShow;
|
||||
#ifdef MOZ_IPC
|
||||
typedef mozilla::dom::PBrowserParent PBrowserParent;
|
||||
typedef mozilla::dom::TabParent TabParent;
|
||||
typedef mozilla::layout::RenderFrameParent RenderFrameParent;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
nsFrameLoader(nsIContent *aOwner, PRBool aNetworkCreated);
|
||||
|
@ -242,6 +246,7 @@ public:
|
|||
nsIDocument* GetOwnerDoc() const
|
||||
{ return mOwnerContent ? mOwnerContent->GetOwnerDoc() : nsnull; }
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
PBrowserParent* GetRemoteBrowser();
|
||||
|
||||
/**
|
||||
|
@ -272,6 +277,7 @@ public:
|
|||
{
|
||||
mCurrentRemoteFrame = aFrame;
|
||||
}
|
||||
#endif
|
||||
nsFrameMessageManager* GetFrameMessageManager() { return mMessageManager; }
|
||||
|
||||
nsIContent* GetOwnerContent() { return mOwnerContent; }
|
||||
|
@ -279,7 +285,9 @@ public:
|
|||
|
||||
private:
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool ShouldUseRemoteProcess();
|
||||
#endif
|
||||
|
||||
/**
|
||||
* If we are an IPC frame, set mRemoteFrame. Otherwise, create and
|
||||
|
@ -299,11 +307,13 @@ private:
|
|||
void FireErrorEvent();
|
||||
nsresult ReallyStartLoadingInternal();
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
// Return true if remote browser created; nothing else to do
|
||||
bool TryRemoteBrowser();
|
||||
|
||||
// Tell the remote browser that it's now "virtually visible"
|
||||
bool ShowRemoteFrame(const nsIntSize& size);
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIDocShell> mDocShell;
|
||||
nsCOMPtr<nsIURI> mURIToLoad;
|
||||
|
@ -325,6 +335,7 @@ private:
|
|||
// it may lose the flag.
|
||||
PRPackedBool mNetworkCreated : 1;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
PRPackedBool mDelayRemoteDialogs : 1;
|
||||
PRPackedBool mRemoteBrowserShown : 1;
|
||||
bool mRemoteFrame;
|
||||
|
@ -332,6 +343,7 @@ private:
|
|||
nsCOMPtr<nsIObserver> mChildHost;
|
||||
RenderFrameParent* mCurrentRemoteFrame;
|
||||
TabParent* mRemoteBrowser;
|
||||
#endif
|
||||
|
||||
// See nsIFrameLoader.idl. Short story, if !(mRenderMode &
|
||||
// RENDER_MODE_ASYNC_SCROLL), all the fields below are ignored in
|
||||
|
|
|
@ -35,8 +35,10 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "ContentChild.h"
|
||||
#include "ContentParent.h"
|
||||
#endif
|
||||
#include "jscntxt.h"
|
||||
#include "nsFrameMessageManager.h"
|
||||
#include "nsContentUtils.h"
|
||||
|
@ -727,6 +729,7 @@ NS_IMPL_ISUPPORTS1(nsScriptCacheCleaner, nsIObserver)
|
|||
nsFrameMessageManager* nsFrameMessageManager::sChildProcessManager = nsnull;
|
||||
nsFrameMessageManager* nsFrameMessageManager::sParentProcessManager = nsnull;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool SendAsyncMessageToChildProcess(void* aCallbackData,
|
||||
const nsAString& aMessage,
|
||||
const nsAString& aJSON)
|
||||
|
@ -766,11 +769,14 @@ bool SendAsyncMessageToParentProcess(void* aCallbackData,
|
|||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
nsresult
|
||||
NS_NewParentProcessMessageManager(nsIFrameMessageManager** aResult)
|
||||
{
|
||||
NS_ASSERTION(!nsFrameMessageManager::sParentProcessManager,
|
||||
"Re-creating sParentProcessManager");
|
||||
#ifdef MOZ_IPC
|
||||
NS_ENSURE_TRUE(IsChromeProcess(), NS_ERROR_NOT_AVAILABLE);
|
||||
nsFrameMessageManager* mm = new nsFrameMessageManager(PR_TRUE,
|
||||
nsnull,
|
||||
|
@ -784,6 +790,9 @@ NS_NewParentProcessMessageManager(nsIFrameMessageManager** aResult)
|
|||
NS_ENSURE_TRUE(mm, NS_ERROR_OUT_OF_MEMORY);
|
||||
nsFrameMessageManager::sParentProcessManager = mm;
|
||||
return CallQueryInterface(mm, aResult);
|
||||
#else
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -792,6 +801,7 @@ NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult)
|
|||
{
|
||||
NS_ASSERTION(!nsFrameMessageManager::sChildProcessManager,
|
||||
"Re-creating sChildProcessManager");
|
||||
#ifdef MOZ_IPC
|
||||
NS_ENSURE_TRUE(!IsChromeProcess(), NS_ERROR_NOT_AVAILABLE);
|
||||
nsFrameMessageManager* mm = new nsFrameMessageManager(PR_FALSE,
|
||||
SendSyncMessageToParentProcess,
|
||||
|
@ -805,4 +815,7 @@ NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult)
|
|||
NS_ENSURE_TRUE(mm, NS_ERROR_OUT_OF_MEMORY);
|
||||
nsFrameMessageManager::sChildProcessManager = mm;
|
||||
return CallQueryInterface(mm, aResult);
|
||||
#else
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -560,6 +560,7 @@ GK_ATOM(member, "member")
|
|||
GK_ATOM(menu, "menu")
|
||||
GK_ATOM(menubar, "menubar")
|
||||
GK_ATOM(menubutton, "menubutton")
|
||||
GK_ATOM(menuButton, "menu-button")
|
||||
GK_ATOM(menugenerated, "menugenerated")
|
||||
GK_ATOM(menuitem, "menuitem")
|
||||
GK_ATOM(menulist, "menulist")
|
||||
|
@ -915,6 +916,7 @@ GK_ATOM(span, "span")
|
|||
GK_ATOM(spellcheck, "spellcheck")
|
||||
GK_ATOM(spinner, "spinner")
|
||||
GK_ATOM(split, "split")
|
||||
GK_ATOM(splitmenu, "splitmenu")
|
||||
GK_ATOM(splitter, "splitter")
|
||||
GK_ATOM(spring, "spring")
|
||||
GK_ATOM(src, "src")
|
||||
|
|
|
@ -55,9 +55,14 @@ CPPSRCS = \
|
|||
CanvasImageCache.cpp \
|
||||
CanvasUtils.cpp \
|
||||
nsCanvasRenderingContext2D.cpp \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
CPPSRCS += \
|
||||
DocumentRendererParent.cpp \
|
||||
DocumentRendererChild.cpp \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
# Canvas 3D Pieces
|
||||
|
||||
|
|
|
@ -38,7 +38,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "base/basictypes.h"
|
||||
#endif
|
||||
|
||||
#include "nsIDOMXULElement.h"
|
||||
|
||||
|
@ -117,6 +119,7 @@
|
|||
#include "nsStyleUtil.h"
|
||||
#include "CanvasImageCache.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include <algorithm>
|
||||
# include "mozilla/dom/ContentParent.h"
|
||||
# include "mozilla/ipc/PDocumentRendererParent.h"
|
||||
|
@ -127,6 +130,7 @@
|
|||
# undef DrawText
|
||||
|
||||
using namespace mozilla::ipc;
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
#include "nsSVGEffects.h"
|
||||
|
@ -1230,6 +1234,7 @@ nsCanvasRenderingContext2D::SetIsOpaque(PRBool isOpaque)
|
|||
NS_IMETHODIMP
|
||||
nsCanvasRenderingContext2D::SetIsIPC(PRBool isIPC)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (isIPC == mIPC)
|
||||
return NS_OK;
|
||||
|
||||
|
@ -1243,6 +1248,9 @@ nsCanvasRenderingContext2D::SetIsIPC(PRBool isIPC)
|
|||
}
|
||||
|
||||
return NS_OK;
|
||||
#else
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
#endif
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -3759,6 +3767,7 @@ nsCanvasRenderingContext2D::AsyncDrawXULElement(nsIDOMXULElement* aElem, float a
|
|||
if (!frameloader)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
PBrowserParent *child = frameloader->GetRemoteBrowser();
|
||||
if (!child) {
|
||||
nsCOMPtr<nsIDOMWindow> window =
|
||||
|
@ -3806,6 +3815,14 @@ nsCanvasRenderingContext2D::AsyncDrawXULElement(nsIDOMXULElement* aElem, float a
|
|||
}
|
||||
|
||||
return NS_OK;
|
||||
#else
|
||||
nsCOMPtr<nsIDOMWindow> window =
|
||||
do_GetInterface(frameloader->GetExistingDocShell());
|
||||
if (!window)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
return DrawWindow(window, aX, aY, aW, aH, aBGColor, flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -37,8 +37,10 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#include "IPC/IPCMessageUtils.h"
|
||||
#endif
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsDOMEvent.h"
|
||||
#include "nsEventStateManager.h"
|
||||
|
@ -1368,6 +1370,7 @@ nsDOMEvent::GetPreventDefault(PRBool* aReturn)
|
|||
void
|
||||
nsDOMEvent::Serialize(IPC::Message* aMsg, PRBool aSerializeInterfaceType)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (aSerializeInterfaceType) {
|
||||
IPC::WriteParam(aMsg, NS_LITERAL_STRING("event"));
|
||||
}
|
||||
|
@ -1389,11 +1392,13 @@ nsDOMEvent::Serialize(IPC::Message* aMsg, PRBool aSerializeInterfaceType)
|
|||
IPC::WriteParam(aMsg, trusted);
|
||||
|
||||
// No timestamp serialization for now!
|
||||
#endif
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsDOMEvent::Deserialize(const IPC::Message* aMsg, void** aIter)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
nsString type;
|
||||
NS_ENSURE_TRUE(IPC::ReadParam(aMsg, aIter, &type), PR_FALSE);
|
||||
|
||||
|
@ -1411,6 +1416,9 @@ nsDOMEvent::Deserialize(const IPC::Message* aMsg, void** aIter)
|
|||
SetTrusted(trusted);
|
||||
|
||||
return PR_TRUE;
|
||||
#else
|
||||
return PR_FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -36,8 +36,10 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#include "IPC/IPCMessageUtils.h"
|
||||
#endif
|
||||
#include "nsDOMNotifyPaintEvent.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsClientRect.h"
|
||||
|
@ -146,6 +148,7 @@ nsDOMNotifyPaintEvent::GetPaintRequests(nsIDOMPaintRequestList** aResult)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
void
|
||||
nsDOMNotifyPaintEvent::Serialize(IPC::Message* aMsg,
|
||||
PRBool aSerializeInterfaceType)
|
||||
|
@ -187,6 +190,7 @@ nsDOMNotifyPaintEvent::Deserialize(const IPC::Message* aMsg, void** aIter)
|
|||
|
||||
return PR_TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
nsresult NS_NewDOMNotifyPaintEvent(nsIDOMEvent** aInstancePtrResult,
|
||||
nsPresContext* aPresContext,
|
||||
|
|
|
@ -61,8 +61,10 @@ public:
|
|||
// Forward to base class
|
||||
NS_FORWARD_TO_NSDOMEVENT
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
virtual void Serialize(IPC::Message* aMsg, PRBool aSerializeInterfaceType);
|
||||
virtual PRBool Deserialize(const IPC::Message* aMsg, void** aIter);
|
||||
#endif
|
||||
private:
|
||||
nsRegion GetRegion();
|
||||
|
||||
|
|
|
@ -35,8 +35,10 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#include "IPC/IPCMessageUtils.h"
|
||||
#endif
|
||||
|
||||
#include "nsDOMScrollAreaEvent.h"
|
||||
#include "nsGUIEvent.h"
|
||||
|
@ -114,6 +116,7 @@ nsDOMScrollAreaEvent::InitScrollAreaEvent(const nsAString &aEventType,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
void
|
||||
nsDOMScrollAreaEvent::Serialize(IPC::Message* aMsg,
|
||||
PRBool aSerializeInterfaceType)
|
||||
|
@ -149,6 +152,7 @@ nsDOMScrollAreaEvent::Deserialize(const IPC::Message* aMsg, void** aIter)
|
|||
|
||||
return PR_TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
nsresult
|
||||
NS_NewDOMScrollAreaEvent(nsIDOMEvent **aInstancePtrResult,
|
||||
|
|
|
@ -58,8 +58,10 @@ public:
|
|||
|
||||
NS_FORWARD_TO_NSDOMUIEVENT
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
virtual void Serialize(IPC::Message* aMsg, PRBool aSerializeInterfaceType);
|
||||
virtual PRBool Deserialize(const IPC::Message* aMsg, void** aIter);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
nsClientRect mClientArea;
|
||||
|
|
|
@ -37,8 +37,10 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#include "IPC/IPCMessageUtils.h"
|
||||
#endif
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsDOMUIEvent.h"
|
||||
#include "nsIPresShell.h"
|
||||
|
@ -392,6 +394,7 @@ nsDOMUIEvent::DuplicatePrivateData()
|
|||
return rv;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
void
|
||||
nsDOMUIEvent::Serialize(IPC::Message* aMsg, PRBool aSerializeInterfaceType)
|
||||
{
|
||||
|
@ -413,6 +416,7 @@ nsDOMUIEvent::Deserialize(const IPC::Message* aMsg, void** aIter)
|
|||
NS_ENSURE_TRUE(IPC::ReadParam(aMsg, aIter, &mDetail), PR_FALSE);
|
||||
return PR_TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
nsresult NS_NewDOMUIEvent(nsIDOMEvent** aInstancePtrResult,
|
||||
nsPresContext* aPresContext,
|
||||
|
|
|
@ -62,8 +62,10 @@ public:
|
|||
|
||||
// nsIPrivateDOMEvent interface
|
||||
NS_IMETHOD DuplicatePrivateData();
|
||||
#ifdef MOZ_IPC
|
||||
virtual void Serialize(IPC::Message* aMsg, PRBool aSerializeInterfaceType);
|
||||
virtual PRBool Deserialize(const IPC::Message* aMsg, void** aIter);
|
||||
#endif
|
||||
|
||||
// Forward to nsDOMEvent
|
||||
NS_FORWARD_TO_NSDOMEVENT
|
||||
|
|
|
@ -44,7 +44,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/dom/TabParent.h"
|
||||
#endif
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsEventStateManager.h"
|
||||
|
@ -162,7 +164,9 @@
|
|||
#import <ApplicationServices/ApplicationServices.h>
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
using namespace mozilla::dom;
|
||||
#endif
|
||||
|
||||
//#define DEBUG_DOCSHELL_FOCUS
|
||||
|
||||
|
@ -1334,16 +1338,20 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
|
|||
break;
|
||||
case NS_QUERY_SELECTED_TEXT:
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (RemoteQueryContentEvent(aEvent))
|
||||
break;
|
||||
#endif
|
||||
nsContentEventHandler handler(mPresContext);
|
||||
handler.OnQuerySelectedText((nsQueryContentEvent*)aEvent);
|
||||
}
|
||||
break;
|
||||
case NS_QUERY_TEXT_CONTENT:
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (RemoteQueryContentEvent(aEvent))
|
||||
break;
|
||||
#endif
|
||||
nsContentEventHandler handler(mPresContext);
|
||||
handler.OnQueryTextContent((nsQueryContentEvent*)aEvent);
|
||||
}
|
||||
|
@ -1399,6 +1407,7 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
|
|||
break;
|
||||
case NS_SELECTION_SET:
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
nsSelectionEvent *selectionEvent =
|
||||
static_cast<nsSelectionEvent*>(aEvent);
|
||||
if (IsTargetCrossProcess(selectionEvent)) {
|
||||
|
@ -1407,6 +1416,7 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
|
|||
selectionEvent->mSucceeded = PR_TRUE;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
nsContentEventHandler handler(mPresContext);
|
||||
handler.OnSelectionEvent((nsSelectionEvent*)aEvent);
|
||||
}
|
||||
|
@ -1427,6 +1437,7 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
|
|||
DoContentCommandScrollEvent(static_cast<nsContentCommandEvent*>(aEvent));
|
||||
}
|
||||
break;
|
||||
#ifdef MOZ_IPC
|
||||
case NS_TEXT_TEXT:
|
||||
{
|
||||
nsTextEvent *textEvent = static_cast<nsTextEvent*>(aEvent);
|
||||
|
@ -1453,6 +1464,7 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
|
|||
}
|
||||
}
|
||||
break;
|
||||
#endif // MOZ_IPC
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -3325,6 +3337,7 @@ nsEventStateManager::PostHandleEvent(nsPresContext* aPresContext,
|
|||
return ret;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
PRBool
|
||||
nsEventStateManager::RemoteQueryContentEvent(nsEvent *aEvent)
|
||||
{
|
||||
|
@ -3354,6 +3367,7 @@ nsEventStateManager::IsTargetCrossProcess(nsGUIEvent *aEvent)
|
|||
return PR_FALSE;
|
||||
return TabParent::GetIMETabParent() != nsnull;
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsEventStateManager::NotifyDestroyPresContext(nsPresContext* aPresContext)
|
||||
|
|
|
@ -349,9 +349,11 @@ protected:
|
|||
nsresult DoContentCommandEvent(nsContentCommandEvent* aEvent);
|
||||
nsresult DoContentCommandScrollEvent(nsContentCommandEvent* aEvent);
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
PRBool RemoteQueryContentEvent(nsEvent *aEvent);
|
||||
mozilla::dom::TabParent *GetCrossProcessTarget();
|
||||
PRBool IsTargetCrossProcess(nsGUIEvent *aEvent);
|
||||
#endif
|
||||
|
||||
PRInt32 mLockCursor;
|
||||
|
||||
|
|
|
@ -50,9 +50,14 @@ LIBXUL_LIBRARY = 1
|
|||
EXPORTS = \
|
||||
nsImageMapUtils.h \
|
||||
nsClientRect.h \
|
||||
nsHTMLDNSPrefetch.h \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
EXPORTS += \
|
||||
nsHTMLDNSPrefetch.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
CPPSRCS = \
|
||||
nsClientRect.cpp \
|
||||
nsHTMLDNSPrefetch.cpp \
|
||||
|
|
|
@ -553,6 +553,7 @@ NS_IMETHODIMP
|
|||
nsHTMLCanvasElement::MozGetIPCContext(const nsAString& aContextId,
|
||||
nsISupports **aContext)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if(!nsContentUtils::IsCallerTrustedForRead()) {
|
||||
// XXX ERRMSG we need to report an error to developers here! (bug 329026)
|
||||
return NS_ERROR_DOM_SECURITY_ERR;
|
||||
|
@ -587,6 +588,9 @@ nsHTMLCanvasElement::MozGetIPCContext(const nsAString& aContextId,
|
|||
|
||||
NS_ADDREF (*aContext = mCurrentContext);
|
||||
return NS_OK;
|
||||
#else
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
#endif
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
|
|
@ -36,10 +36,12 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#include "mozilla/net/NeckoCommon.h"
|
||||
#include "mozilla/net/NeckoChild.h"
|
||||
#include "nsURLHelper.h"
|
||||
#endif
|
||||
|
||||
#include "nsHTMLDNSPrefetch.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
@ -106,8 +108,10 @@ nsHTMLDNSPrefetch::Initialize()
|
|||
rv = CallGetService(kDNSServiceCID, &sDNSService);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (IsNeckoChild())
|
||||
NeckoChild::InitNeckoChild();
|
||||
#endif
|
||||
|
||||
sInitialized = PR_TRUE;
|
||||
return NS_OK;
|
||||
|
@ -138,6 +142,7 @@ nsHTMLDNSPrefetch::IsAllowed (nsIDocument *aDocument)
|
|||
nsresult
|
||||
nsHTMLDNSPrefetch::Prefetch(Link *aElement, PRUint16 flags)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (IsNeckoChild()) {
|
||||
// Instead of transporting the Link object to the other process
|
||||
// we are using the hostname based function here, too. Compared to the
|
||||
|
@ -148,6 +153,7 @@ nsHTMLDNSPrefetch::Prefetch(Link *aElement, PRUint16 flags)
|
|||
|
||||
return Prefetch(hostname, flags);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(sInitialized && sPrefetches && sDNSService && sDNSListener))
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
|
@ -176,6 +182,7 @@ nsHTMLDNSPrefetch::PrefetchHigh(Link *aElement)
|
|||
nsresult
|
||||
nsHTMLDNSPrefetch::Prefetch(nsAString &hostname, PRUint16 flags)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (IsNeckoChild()) {
|
||||
// We need to check IsEmpty() because net_IsValidHostName()
|
||||
// considers empty strings to be valid hostnames
|
||||
|
@ -185,6 +192,7 @@ nsHTMLDNSPrefetch::Prefetch(nsAString &hostname, PRUint16 flags)
|
|||
}
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(sInitialized && sDNSService && sPrefetches && sDNSListener))
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
|
|
|
@ -143,7 +143,9 @@ public:
|
|||
} mEntries[sMaxDeferred];
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
friend class mozilla::net::NeckoParent;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -37,12 +37,14 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/dom/ContentChild.h"
|
||||
#include "mozilla/dom/PAudioChild.h"
|
||||
#include "mozilla/dom/AudioChild.h"
|
||||
#include "mozilla/Monitor.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
using namespace mozilla::dom;
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
@ -63,7 +65,7 @@ extern "C" {
|
|||
|
||||
// Android's audio backend is not available in content processes, so audio must
|
||||
// be remoted to the parent chrome process.
|
||||
#if defined(ANDROID)
|
||||
#if defined(ANDROID) && defined(MOZ_IPC)
|
||||
#define REMOTE_AUDIO 1
|
||||
#endif
|
||||
|
||||
|
@ -120,6 +122,7 @@ class nsAudioStreamLocal : public nsAudioStream
|
|||
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
class nsAudioStreamRemote : public nsAudioStream
|
||||
{
|
||||
public:
|
||||
|
@ -291,6 +294,7 @@ class AudioShutdownEvent : public nsRunnable
|
|||
|
||||
nsRefPtr<AudioChild> mAudioChild;
|
||||
};
|
||||
#endif // MOZ_IPC
|
||||
|
||||
|
||||
void nsAudioStream::InitLibrary()
|
||||
|
@ -593,6 +597,8 @@ PRInt32 nsAudioStreamLocal::GetMinWriteSamples()
|
|||
return static_cast<PRInt32>(samples);
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
nsAudioStreamRemote::nsAudioStreamRemote()
|
||||
: mAudioChild(NULL),
|
||||
mFormat(FORMAT_S16_LE),
|
||||
|
@ -744,3 +750,5 @@ nsAudioStreamRemote::IsPaused()
|
|||
{
|
||||
return mPaused;
|
||||
}
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
|
|
@ -64,13 +64,14 @@ public:
|
|||
// library after using it.
|
||||
static void ShutdownLibrary();
|
||||
|
||||
// Thread that is shared between audio streams.
|
||||
// Thread, usually for MOZ_IPC handling, that is shared between audio streams.
|
||||
// This may return null in the child process
|
||||
nsIThread *GetThread();
|
||||
|
||||
// AllocateStream will return either a local stream or a remoted stream
|
||||
// depending on where you call it from. If you call this from a child process,
|
||||
// you may receive an implementation which forwards to a compositing process.
|
||||
// depending on where you call it from. If MOZ_IPC is enabled, and you
|
||||
// call this from a child process, you may recieve an implementation which
|
||||
// forwards to a compositing process.
|
||||
static nsAudioStream* AllocateStream();
|
||||
|
||||
// Initialize the audio stream. aNumChannels is the number of audio channels
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
* UnregisterVisitedCallback.
|
||||
*
|
||||
* @pre aURI must not be null.
|
||||
* @pre aLink may be null only in the parent (chrome) process.
|
||||
* @pre aLink may be null only in the MOZ_IPC parent process.
|
||||
*
|
||||
* @param aURI
|
||||
* The URI to check.
|
||||
|
|
|
@ -229,7 +229,9 @@ static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
|
|||
#include "nsIChannelPolicy.h"
|
||||
#include "nsIContentSecurityPolicy.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "nsXULAppAPI.h"
|
||||
#endif
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
|
@ -6010,10 +6012,12 @@ nsDocShell::OnRedirectStateChange(nsIChannel* aOldChannel,
|
|||
nsCOMPtr<nsIApplicationCacheChannel> appCacheChannel =
|
||||
do_QueryInterface(aNewChannel);
|
||||
if (appCacheChannel) {
|
||||
#ifdef MOZ_IPC
|
||||
// Permission will be checked in the parent process.
|
||||
if (GeckoProcessType_Default != XRE_GetProcessType())
|
||||
appCacheChannel->SetChooseApplicationCache(PR_TRUE);
|
||||
else
|
||||
#endif
|
||||
appCacheChannel->SetChooseApplicationCache(ShouldCheckAppCache(newURI));
|
||||
}
|
||||
|
||||
|
@ -8724,10 +8728,12 @@ nsDocShell::DoURILoad(nsIURI * aURI,
|
|||
|
||||
// Loads with the correct permissions should check for a matching
|
||||
// application cache.
|
||||
#ifdef MOZ_IPC
|
||||
// Permission will be checked in the parent process
|
||||
if (GeckoProcessType_Default != XRE_GetProcessType())
|
||||
appCacheChannel->SetChooseApplicationCache(PR_TRUE);
|
||||
else
|
||||
#endif
|
||||
appCacheChannel->SetChooseApplicationCache(
|
||||
ShouldCheckAppCache(aURI));
|
||||
}
|
||||
|
|
|
@ -83,8 +83,13 @@ DIRS += \
|
|||
plugins \
|
||||
indexedDB \
|
||||
system \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
DIRS += \
|
||||
ipc \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
ifdef ENABLE_TESTS
|
||||
DIRS += tests
|
||||
|
|
|
@ -83,7 +83,6 @@ EXPORTS = \
|
|||
nsPIWindowRoot.h \
|
||||
nsFocusManager.h \
|
||||
nsWrapperCache.h \
|
||||
nsContentPermissionHelper.h \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
|
@ -107,17 +106,27 @@ CPPSRCS = \
|
|||
nsScriptNameSpaceManager.cpp \
|
||||
nsDOMScriptObjectFactory.cpp \
|
||||
nsQueryContentEventResult.cpp \
|
||||
nsContentPermissionHelper.cpp \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
EXPORTS += \
|
||||
nsContentPermissionHelper.h \
|
||||
$(NULL)
|
||||
CPPSRCS += \
|
||||
nsContentPermissionHelper.cpp \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/dom/dom-config.mk
|
||||
|
||||
ifdef MOZ_JSDEBUGGER
|
||||
DEFINES += -DMOZ_JSDEBUGGER
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC
|
||||
include $(topsrcdir)/config/config.mk
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
|
|
@ -46,7 +46,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#endif
|
||||
|
||||
// Local Includes
|
||||
#include "nsGlobalWindow.h"
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
* http://www.w3.org/TR/DOM-Level-2-Style
|
||||
*/
|
||||
|
||||
[scriptable, uuid(abedfd52-9821-4311-b50c-7ef229b43abf)]
|
||||
[scriptable, uuid(6b8fda8f-94f6-4d5c-aa77-17c5270f36c7)]
|
||||
interface nsIDOMCSS2Properties : nsISupports
|
||||
{
|
||||
attribute DOMString azimuth;
|
||||
|
@ -734,6 +734,12 @@ interface nsIDOMCSS2Properties : nsISupports
|
|||
attribute DOMString backgroundSize;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozTextDecorationColor;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozTextDecorationStyle;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozTransitionProperty;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
|
|
|
@ -50,6 +50,8 @@ EXPORTS_mozilla = \
|
|||
PluginLibrary.h \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla mozilla/plugins
|
||||
|
||||
EXPORTS_mozilla/plugins = \
|
||||
|
@ -149,6 +151,7 @@ LOCAL_INCLUDES = \
|
|||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
|
|
@ -83,7 +83,9 @@ LOCAL_INCLUDES += -I$(topsrcdir)/dom/system/android \
|
|||
$(NULL)
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC
|
||||
EXPORTS += nsGeoPositionIPCSerialiser.h
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "nsContentPermissionHelper.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
|
||||
|
@ -52,6 +53,7 @@
|
|||
|
||||
#include "nsDOMEventTargetHelper.h"
|
||||
#include "TabChild.h"
|
||||
#endif
|
||||
|
||||
#include "nsGeolocation.h"
|
||||
#include "nsAutoPtr.h"
|
||||
|
@ -480,6 +482,7 @@ nsGeolocationRequest::Shutdown()
|
|||
mErrorCallback = nsnull;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool nsGeolocationRequest::Recv__delete__(const bool& allow)
|
||||
{
|
||||
if (allow)
|
||||
|
@ -488,6 +491,7 @@ bool nsGeolocationRequest::Recv__delete__(const bool& allow)
|
|||
(void) Cancel();
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
////////////////////////////////////////////////////
|
||||
// nsGeolocationService
|
||||
////////////////////////////////////////////////////
|
||||
|
@ -677,11 +681,13 @@ nsGeolocationService::StartDevice()
|
|||
// inactivivity
|
||||
SetDisconnectTimer();
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Content) {
|
||||
ContentChild* cpc = ContentChild::GetSingleton();
|
||||
cpc->SendAddGeolocationListener();
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Start them up!
|
||||
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
|
||||
|
@ -720,11 +726,13 @@ nsGeolocationService::StopDevice()
|
|||
mDisconnectTimer = nsnull;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Content) {
|
||||
ContentChild* cpc = ContentChild::GetSingleton();
|
||||
cpc->SendRemoveGeolocationListener();
|
||||
return; // bail early
|
||||
}
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
|
||||
if (!obs)
|
||||
|
@ -1045,6 +1053,7 @@ nsGeolocation::WindowOwnerStillExists()
|
|||
bool
|
||||
nsGeolocation::RegisterRequestWithPrompt(nsGeolocationRequest* request)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Content) {
|
||||
nsCOMPtr<nsPIDOMWindow> window = do_QueryReferent(mOwner);
|
||||
if (!window)
|
||||
|
@ -1066,6 +1075,7 @@ nsGeolocation::RegisterRequestWithPrompt(nsGeolocationRequest* request)
|
|||
request->Sendprompt();
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (nsContentUtils::GetBoolPref("geo.prompt.testing", PR_FALSE))
|
||||
{
|
||||
|
|
|
@ -37,9 +37,11 @@
|
|||
#ifndef nsGeoLocation_h
|
||||
#define nsGeoLocation_h
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/dom/PContentPermissionRequestChild.h"
|
||||
// Microsoft's API Name hackery sucks
|
||||
#undef CreateEvent
|
||||
#endif
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsAutoPtr.h"
|
||||
|
@ -65,7 +67,9 @@
|
|||
#include "nsIGeolocationProvider.h"
|
||||
#include "nsIContentPermissionPrompt.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "PCOMContentPermissionRequestChild.h"
|
||||
#endif
|
||||
|
||||
class nsGeolocationService;
|
||||
class nsGeolocation;
|
||||
|
@ -73,7 +77,9 @@ class nsGeolocation;
|
|||
class nsGeolocationRequest
|
||||
: public nsIContentPermissionRequest
|
||||
, public nsITimerCallback
|
||||
#ifdef MOZ_IPC
|
||||
, public PCOMContentPermissionRequestChild
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
|
@ -101,8 +107,10 @@ class nsGeolocationRequest
|
|||
|
||||
~nsGeolocationRequest();
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
bool Recv__delete__(const bool& allow);
|
||||
void IPDLRelease() { Release(); }
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include "nsDesktopNotification.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "nsContentPermissionHelper.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
|
||||
|
@ -43,6 +44,7 @@
|
|||
#include "TabChild.h"
|
||||
|
||||
using namespace mozilla::dom;
|
||||
#endif
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* AlertServiceObserver */
|
||||
|
@ -127,6 +129,7 @@ nsDOMDesktopNotification::nsDOMDesktopNotification(const nsAString & title,
|
|||
nsRefPtr<nsDesktopNotificationRequest> request = new nsDesktopNotificationRequest(this);
|
||||
|
||||
// if we are in the content process, then remote it to the parent.
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Content) {
|
||||
|
||||
// if for some reason mOwner is null, just silently
|
||||
|
@ -149,6 +152,7 @@ nsDOMDesktopNotification::nsDOMDesktopNotification(const nsAString & title,
|
|||
request->Sendprompt();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// otherwise, dispatch it
|
||||
NS_DispatchToMainThread(request);
|
||||
|
|
|
@ -37,7 +37,10 @@
|
|||
#ifndef nsDesktopNotification_h
|
||||
#define nsDesktopNotification_h
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "PCOMContentPermissionRequestChild.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include "nsDOMClassInfo.h"
|
||||
#include "nsIJSContextStack.h"
|
||||
|
@ -152,8 +155,10 @@ protected:
|
|||
* Simple Request
|
||||
*/
|
||||
class nsDesktopNotificationRequest : public nsIContentPermissionRequest,
|
||||
public nsRunnable,
|
||||
public PCOMContentPermissionRequestChild
|
||||
public nsRunnable
|
||||
#ifdef MOZ_IPC
|
||||
, public PCOMContentPermissionRequestChild
|
||||
#endif
|
||||
|
||||
{
|
||||
public:
|
||||
|
@ -177,6 +182,8 @@ class nsDesktopNotificationRequest : public nsIContentPermissionRequest,
|
|||
{
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
bool Recv__delete__(const bool& allow)
|
||||
{
|
||||
if (allow)
|
||||
|
@ -186,6 +193,7 @@ class nsDesktopNotificationRequest : public nsIContentPermissionRequest,
|
|||
return true;
|
||||
}
|
||||
void IPDLRelease() { Release(); }
|
||||
#endif
|
||||
|
||||
nsRefPtr<nsDOMDesktopNotification> mDesktopNotification;
|
||||
};
|
||||
|
|
|
@ -57,9 +57,14 @@
|
|||
#include "nsIScriptGlobalObject.h"
|
||||
#include "nsIWebNavigation.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "nsXULAppAPI.h"
|
||||
#define IS_CHILD_PROCESS() \
|
||||
(GeckoProcessType_Default != XRE_GetProcessType())
|
||||
#else
|
||||
#define IS_CHILD_PROCESS() \
|
||||
(false)
|
||||
#endif
|
||||
|
||||
// Event names
|
||||
|
||||
|
|
|
@ -55,11 +55,13 @@ CPPSRCS = \
|
|||
ifdef MOZ_STORAGE
|
||||
CPPSRCS += nsDOMStorageDBWrapper.cpp nsDOMStoragePersistentDB.cpp nsDOMStorageMemoryDB.cpp
|
||||
|
||||
ifdef MOZ_IPC
|
||||
CPPSRCS += StorageChild.cpp StorageParent.cpp
|
||||
|
||||
EXPORTS_NAMESPACES = mozilla/dom
|
||||
EXPORTS_mozilla/dom = StorageChild.h StorageParent.h
|
||||
endif
|
||||
endif
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
|
|
@ -40,10 +40,12 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "StorageChild.h"
|
||||
#include "StorageParent.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
using mozilla::dom::StorageChild;
|
||||
#endif
|
||||
|
||||
#include "prnetdb.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
@ -269,9 +271,11 @@ nsDOMStorageManager::Initialize()
|
|||
|
||||
NS_ADDREF(gStorageManager);
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
// No observers needed in non-chrome
|
||||
if (XRE_GetProcessType() != GeckoProcessType_Default)
|
||||
return NS_OK;
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
|
||||
if (!os)
|
||||
|
@ -1351,10 +1355,12 @@ nsDOMStorage::nsDOMStorage()
|
|||
{
|
||||
mSecurityChecker = this;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() != GeckoProcessType_Default)
|
||||
mStorageImpl = new StorageChild(this);
|
||||
else
|
||||
mStorageImpl = new DOMStorageImpl(this);
|
||||
#endif
|
||||
mStorageImpl = new DOMStorageImpl(this);
|
||||
}
|
||||
|
||||
nsDOMStorage::nsDOMStorage(nsDOMStorage& aThat)
|
||||
|
@ -1363,10 +1369,13 @@ nsDOMStorage::nsDOMStorage(nsDOMStorage& aThat)
|
|||
{
|
||||
mSecurityChecker = this;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() != GeckoProcessType_Default) {
|
||||
StorageChild* other = static_cast<StorageChild*>(aThat.mStorageImpl.get());
|
||||
mStorageImpl = new StorageChild(this, *other);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
DOMStorageImpl* other = static_cast<DOMStorageImpl*>(aThat.mStorageImpl.get());
|
||||
mStorageImpl = new DOMStorageImpl(this, *other);
|
||||
}
|
||||
|
|
|
@ -46,7 +46,6 @@ MODULE = editor
|
|||
GRE_MODULE = 1
|
||||
|
||||
XPIDLSRCS = \
|
||||
nsICiter.idl \
|
||||
nsIDocumentStateListener.idl \
|
||||
nsIEditActionListener.idl \
|
||||
nsIEditor.idl \
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
/* -*- 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
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* 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 ***** */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "domstubs.idl"
|
||||
%{C++
|
||||
#include "nsString.h"
|
||||
%}
|
||||
/** Handle plaintext citations, as in mail quoting.
|
||||
* Used by the editor but not dependant on it.
|
||||
*/
|
||||
|
||||
[scriptable, uuid(a6cf9102-15b3-11d2-932e-00805f8add32)]
|
||||
|
||||
interface nsICiter : nsISupports
|
||||
{
|
||||
|
||||
DOMString GetCiteString(in DOMString aInString);
|
||||
|
||||
DOMString StripCites(in DOMString aInString);
|
||||
|
||||
DOMString Rewrap(in DOMString aInString,
|
||||
in unsigned long aWrapCol, in unsigned long aFirstLineOffset,
|
||||
in boolean aRespectNewlines);
|
||||
};
|
||||
|
||||
|
|
@ -58,18 +58,7 @@ const PRUnichar cr('\r');
|
|||
/** Mail citations using the Internet style: > This is a citation
|
||||
*/
|
||||
|
||||
|
||||
nsInternetCiter::nsInternetCiter()
|
||||
{
|
||||
}
|
||||
|
||||
nsInternetCiter::~nsInternetCiter()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsInternetCiter, nsICiter)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsresult
|
||||
nsInternetCiter::GetCiteString(const nsAString& aInString, nsAString& aOutString)
|
||||
{
|
||||
aOutString.Truncate();
|
||||
|
@ -155,7 +144,7 @@ nsInternetCiter::StripCitesAndLinebreaks(const nsAString& aInString,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsresult
|
||||
nsInternetCiter::StripCites(const nsAString& aInString, nsAString& aOutString)
|
||||
{
|
||||
return StripCitesAndLinebreaks(aInString, aOutString, PR_FALSE, 0);
|
||||
|
@ -188,7 +177,7 @@ static inline PRBool IsSpace(PRUnichar c)
|
|||
return (nsCRT::IsAsciiSpace(c) || (c == nl) || (c == cr) || (c == nbsp));
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsresult
|
||||
nsInternetCiter::Rewrap(const nsAString& aInString,
|
||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||
PRBool aRespectNewlines,
|
||||
|
|
|
@ -38,33 +38,25 @@
|
|||
#ifndef nsInternetCiter_h__
|
||||
#define nsInternetCiter_h__
|
||||
|
||||
#include "nsICiter.h"
|
||||
|
||||
#include "nsString.h"
|
||||
|
||||
/** Mail citations using standard Internet style.
|
||||
*/
|
||||
class nsInternetCiter : public nsICiter
|
||||
class nsInternetCiter
|
||||
{
|
||||
public:
|
||||
nsInternetCiter();
|
||||
virtual ~nsInternetCiter();
|
||||
//Interfaces for addref and release and queryinterface
|
||||
//NOTE: Use NS_DECL_ISUPPORTS_INHERITED in any class inherited from nsEditor
|
||||
NS_DECL_ISUPPORTS
|
||||
static nsresult GetCiteString(const nsAString & aInString, nsAString & aOutString);
|
||||
|
||||
NS_IMETHOD GetCiteString(const nsAString & aInString, nsAString & aOutString);
|
||||
static nsresult StripCites(const nsAString & aInString, nsAString & aOutString);
|
||||
|
||||
NS_IMETHOD StripCites(const nsAString & aInString, nsAString & aOutString);
|
||||
|
||||
NS_IMETHOD Rewrap(const nsAString & aInString,
|
||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||
PRBool aRespectNewlines,
|
||||
nsAString & aOutString);
|
||||
static nsresult Rewrap(const nsAString & aInString,
|
||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||
PRBool aRespectNewlines,
|
||||
nsAString & aOutString);
|
||||
|
||||
protected:
|
||||
nsresult StripCitesAndLinebreaks(const nsAString& aInString, nsAString& aOutString,
|
||||
PRBool aLinebreaksToo, PRInt32* aCiteLevel);
|
||||
static nsresult StripCitesAndLinebreaks(const nsAString& aInString, nsAString& aOutString,
|
||||
PRBool aLinebreaksToo, PRInt32* aCiteLevel);
|
||||
};
|
||||
|
||||
#endif //nsInternetCiter_h__
|
||||
|
|
|
@ -1530,12 +1530,9 @@ nsPlaintextEditor::InsertAsQuotation(const nsAString& aQuotedText,
|
|||
// Protect the edit rules object from dying
|
||||
nsCOMPtr<nsIEditRules> kungFuDeathGrip(mRules);
|
||||
|
||||
// We have the text. Cite it appropriately:
|
||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
||||
|
||||
// Let the citer quote it for us:
|
||||
nsString quotedStuff;
|
||||
nsresult rv = citer->GetCiteString(aQuotedText, quotedStuff);
|
||||
nsresult rv = nsInternetCiter::GetCiteString(aQuotedText, quotedStuff);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// It's best to put a blank line after the quoted text so that mails
|
||||
|
@ -1630,13 +1627,9 @@ nsPlaintextEditor::Rewrap(PRBool aRespectNewlines)
|
|||
&isCollapsed, current);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
NS_ENSURE_TRUE(citer, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsString wrapped;
|
||||
PRUint32 firstLineOffset = 0; // XXX need to reset this if there is a selection
|
||||
rv = citer->Rewrap(current, wrapCol, firstLineOffset, aRespectNewlines,
|
||||
rv = nsInternetCiter::Rewrap(current, wrapCol, firstLineOffset, aRespectNewlines,
|
||||
wrapped);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
@ -1659,11 +1652,8 @@ nsPlaintextEditor::StripCites()
|
|||
&isCollapsed, current);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
||||
NS_ENSURE_TRUE(citer, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsString stripped;
|
||||
rv = citer->StripCites(current, stripped);
|
||||
rv = nsInternetCiter::StripCites(current, stripped);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (isCollapsed) // rewrap the whole document
|
||||
|
|
|
@ -1229,7 +1229,10 @@ NS_IMETHODIMP nsWebBrowser::Create()
|
|||
}
|
||||
mDocShellAsNav->SetSessionHistory(mInitInfo->sessionHistory);
|
||||
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Default) {
|
||||
#ifdef MOZ_IPC
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Default)
|
||||
#endif
|
||||
{
|
||||
// Hook up global history. Do not fail if we can't - just warn.
|
||||
rv = EnableGlobalHistory(mShouldEnableHistory);
|
||||
NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "EnableGlobalHistory() failed");
|
||||
|
|
|
@ -37,9 +37,11 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/dom/ContentParent.h"
|
||||
#include "mozilla/dom/ContentChild.h"
|
||||
#include "mozilla/unused.h"
|
||||
#endif
|
||||
#include "nsPermissionManager.h"
|
||||
#include "nsPermission.h"
|
||||
#include "nsCRT.h"
|
||||
|
@ -61,6 +63,7 @@
|
|||
|
||||
static nsPermissionManager *gPermissionManager = nsnull;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
using mozilla::dom::ContentParent;
|
||||
using mozilla::dom::ContentChild;
|
||||
using mozilla::unused; // ha!
|
||||
|
@ -105,6 +108,7 @@ ParentProcess()
|
|||
|
||||
return nsnull;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define ENSURE_NOT_CHILD_PROCESS_(onError) \
|
||||
PR_BEGIN_MACRO \
|
||||
|
@ -170,7 +174,9 @@ NS_IMPL_ISUPPORTS3(nsPermissionManager, nsIPermissionManager, nsIObserver, nsISu
|
|||
|
||||
nsPermissionManager::nsPermissionManager()
|
||||
: mLargestID(0)
|
||||
#ifdef MOZ_IPC
|
||||
, mUpdateChildProcess(PR_FALSE)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -227,6 +233,7 @@ nsPermissionManager::Init()
|
|||
mObserverService->AddObserver(this, "profile-do-change", PR_TRUE);
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (IsChildProcess()) {
|
||||
// Get the permissions from the parent process
|
||||
InfallibleTArray<IPC::Permission> perms;
|
||||
|
@ -241,6 +248,7 @@ nsPermissionManager::Init()
|
|||
// Stop here; we don't need the DB in the child process
|
||||
return NS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
// ignore failure here, since it's non-fatal (we can run fine without
|
||||
// persistent storage - e.g. if there's no profile).
|
||||
|
@ -432,7 +440,9 @@ nsPermissionManager::Add(nsIURI *aURI,
|
|||
PRUint32 aExpireType,
|
||||
PRInt64 aExpireTime)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
NS_ENSURE_ARG_POINTER(aURI);
|
||||
NS_ENSURE_ARG_POINTER(aType);
|
||||
|
@ -466,6 +476,7 @@ nsPermissionManager::AddInternal(const nsAFlatCString &aHost,
|
|||
NotifyOperationType aNotifyOperation,
|
||||
DBOperationType aDBOperation)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (!IsChildProcess()) {
|
||||
// In the parent, send the update now, if the child is ready
|
||||
if (mUpdateChildProcess) {
|
||||
|
@ -475,6 +486,7 @@ nsPermissionManager::AddInternal(const nsAFlatCString &aHost,
|
|||
unused << ParentProcess()->SendAddPermission(permission);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!gHostArena) {
|
||||
gHostArena = new PLArenaPool;
|
||||
|
@ -615,7 +627,9 @@ NS_IMETHODIMP
|
|||
nsPermissionManager::Remove(const nsACString &aHost,
|
||||
const char *aType)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
NS_ENSURE_ARG_POINTER(aType);
|
||||
|
||||
|
@ -633,7 +647,9 @@ nsPermissionManager::Remove(const nsACString &aHost,
|
|||
NS_IMETHODIMP
|
||||
nsPermissionManager::RemoveAll()
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
nsresult rv = RemoveAllInternal();
|
||||
NotifyObservers(nsnull, NS_LITERAL_STRING("cleared").get());
|
||||
|
@ -790,7 +806,9 @@ AddPermissionsToList(nsHostEntry *entry, void *arg)
|
|||
|
||||
NS_IMETHODIMP nsPermissionManager::GetEnumerator(nsISimpleEnumerator **aEnum)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
// roll an nsCOMArray of all our permissions, then hand out an enumerator
|
||||
nsCOMArray<nsIPermission> array;
|
||||
|
@ -803,7 +821,9 @@ NS_IMETHODIMP nsPermissionManager::GetEnumerator(nsISimpleEnumerator **aEnum)
|
|||
|
||||
NS_IMETHODIMP nsPermissionManager::Observe(nsISupports *aSubject, const char *aTopic, const PRUnichar *someData)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
if (!nsCRT::strcmp(aTopic, "profile-before-change")) {
|
||||
// The profile is about to change,
|
||||
|
@ -900,7 +920,9 @@ nsPermissionManager::NotifyObservers(nsIPermission *aPermission,
|
|||
nsresult
|
||||
nsPermissionManager::Read()
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
nsresult rv;
|
||||
|
||||
|
@ -968,7 +990,9 @@ static const char kMatchTypeHost[] = "host";
|
|||
nsresult
|
||||
nsPermissionManager::Import()
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS;
|
||||
#endif
|
||||
|
||||
nsresult rv;
|
||||
|
||||
|
@ -1074,7 +1098,9 @@ nsPermissionManager::UpdateDB(OperationType aOp,
|
|||
PRUint32 aExpireType,
|
||||
PRInt64 aExpireTime)
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
ENSURE_NOT_CHILD_PROCESS_NORET;
|
||||
#endif
|
||||
|
||||
nsresult rv;
|
||||
|
||||
|
|
|
@ -251,6 +251,7 @@ private:
|
|||
// An array to store the strings identifying the different types.
|
||||
nsTArray<nsCString> mTypeArray;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
// Whether we should update the child process with every change to a
|
||||
// permission. This is set to true once the child is ready to receive
|
||||
// such updates.
|
||||
|
@ -261,6 +262,7 @@ public:
|
|||
{
|
||||
mUpdateChildProcess = PR_TRUE;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
// {4F6B5E00-0C36-11d5-A535-0010A401EB10}
|
||||
|
|
|
@ -96,10 +96,12 @@ libs:: $(_BROWSER_TEST_FILES)
|
|||
|
||||
XPCSHELL_TESTS = unit
|
||||
|
||||
ifdef MOZ_IPC
|
||||
# FIXME/bug 575918: out-of-process xpcshell is broken on OS X
|
||||
ifneq ($(OS_ARCH),Darwin)
|
||||
XPCSHELL_TESTS += unit_ipc
|
||||
endif
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
|
|
@ -59,12 +59,16 @@ endif
|
|||
DIRS += angle
|
||||
|
||||
|
||||
DIRS += src qcms layers harfbuzz/src ots/src thebes src/thebes ipc
|
||||
DIRS += src qcms layers harfbuzz/src ots/src thebes src/thebes
|
||||
|
||||
ifdef BUILD_STATIC_LIBS
|
||||
DIRS += ycbcr
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC
|
||||
DIRS += ipc
|
||||
endif
|
||||
|
||||
ifdef ENABLE_TESTS
|
||||
TOOL_DIRS += tests
|
||||
endif
|
||||
|
|
|
@ -42,6 +42,8 @@ VPATH = @srcdir@
|
|||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
ifdef MOZ_IPC
|
||||
|
||||
MODULE = gfxipc
|
||||
LIBRARY_NAME = gfxipc_s
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
@ -71,6 +73,8 @@ endif
|
|||
include $(topsrcdir)/config/config.mk
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
|
|
@ -38,7 +38,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "mozilla/layers/ShadowLayers.h"
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif // MOZ_IPC
|
||||
|
||||
#include "ImageLayers.h"
|
||||
#include "Layers.h"
|
||||
|
@ -239,6 +241,7 @@ Layer::CanUseOpaqueSurface()
|
|||
parent->CanUseOpaqueSurface();
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
// NB: eventually these methods will be defined unconditionally, and
|
||||
// can be moved into Layers.h
|
||||
const nsIntRect*
|
||||
|
@ -259,6 +262,13 @@ Layer::GetEffectiveVisibleRegion()
|
|||
return GetVisibleRegion();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
const nsIntRect* Layer::GetEffectiveClipRect() { return GetClipRect(); }
|
||||
const nsIntRegion& Layer::GetEffectiveVisibleRegion() { return GetVisibleRegion(); }
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
||||
gfx3DMatrix
|
||||
Layer::SnapTransform(const gfx3DMatrix& aTransform,
|
||||
const gfxRect& aSnapRect,
|
||||
|
@ -351,8 +361,10 @@ Layer::CalculateScissorRect(bool aIntermediate,
|
|||
const gfx3DMatrix&
|
||||
Layer::GetLocalTransform()
|
||||
{
|
||||
#ifdef MOZ_IPC
|
||||
if (ShadowLayer* shadow = AsShadowLayer())
|
||||
return shadow->GetShadowTransform();
|
||||
#endif
|
||||
return mTransform;
|
||||
}
|
||||
|
||||
|
@ -690,6 +702,7 @@ LayerManager::IsLogEnabled()
|
|||
return PR_LOG_TEST(sLog, PR_LOG_DEBUG);
|
||||
}
|
||||
|
||||
# ifdef MOZ_IPC
|
||||
static nsACString&
|
||||
PrintInfo(nsACString& aTo, ShadowLayer* aShadowLayer)
|
||||
{
|
||||
|
@ -707,6 +720,12 @@ PrintInfo(nsACString& aTo, ShadowLayer* aShadowLayer)
|
|||
}
|
||||
return aTo;
|
||||
}
|
||||
# else
|
||||
static nsACString& PrintInfo(nsACString& aTo, ShadowLayer* aShadowLayer)
|
||||
{
|
||||
return aTo;
|
||||
}
|
||||
# endif // MOZ_IPC
|
||||
|
||||
#else // !MOZ_LAYERS_HAVE_LOG
|
||||
|
||||
|
|
|
@ -44,11 +44,14 @@ VPATH = \
|
|||
$(srcdir)/opengl \
|
||||
$(srcdir)/d3d9 \
|
||||
$(srcdir)/d3d10 \
|
||||
$(srcdir)/ipc \
|
||||
$(NULL)
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
ifdef MOZ_IPC
|
||||
VPATH += $(srcdir)/ipc
|
||||
endif
|
||||
|
||||
MODULE = thebes
|
||||
LIBRARY_NAME = layers
|
||||
LIBXUL_LIBRARY = 1
|
||||
|
@ -124,6 +127,7 @@ CPPSRCS += \
|
|||
endif
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC #{
|
||||
EXPORTS_NAMESPACES = IPC mozilla/layers
|
||||
EXPORTS_IPC = ShadowLayerUtils.h
|
||||
EXPORTS_mozilla/layers =\
|
||||
|
@ -145,6 +149,8 @@ EXPORTS_mozilla/layers += ShadowLayerUtilsX11.h
|
|||
CPPSRCS += ShadowLayerUtilsX11.cpp
|
||||
endif #}
|
||||
|
||||
endif #}
|
||||
|
||||
# Enable GLES2.0 under maemo
|
||||
ifdef MOZ_X11
|
||||
ifdef MOZ_PLATFORM_MAEMO
|
||||
|
@ -154,7 +160,9 @@ endif
|
|||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
ifdef MOZ_IPC
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
endif
|
||||
|
||||
CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(TK_CFLAGS)
|
||||
|
||||
|
|
|
@ -36,12 +36,14 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "gfxSharedImageSurface.h"
|
||||
#ifdef MOZ_IPC
|
||||
# include "gfxSharedImageSurface.h"
|
||||
|
||||
#include "mozilla/layers/PLayerChild.h"
|
||||
#include "mozilla/layers/PLayersChild.h"
|
||||
#include "mozilla/layers/PLayersParent.h"
|
||||
#include "ipc/ShadowLayerChild.h"
|
||||
# include "mozilla/layers/PLayerChild.h"
|
||||
# include "mozilla/layers/PLayersChild.h"
|
||||
# include "mozilla/layers/PLayersParent.h"
|
||||
# include "ipc/ShadowLayerChild.h"
|
||||
#endif
|
||||
|
||||
#include "BasicLayers.h"
|
||||
#include "ImageLayers.h"
|
||||
|
@ -1607,6 +1609,8 @@ BasicLayerManager::CreateReadbackLayer()
|
|||
return layer.forget();
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
class BasicShadowableThebesLayer;
|
||||
class BasicShadowableLayer : public ShadowableLayer
|
||||
{
|
||||
|
@ -2890,6 +2894,7 @@ BasicShadowLayerManager::IsCompositingCheap()
|
|||
return mShadowManager &&
|
||||
LayerManager::IsCompositingCheap(GetParentBackendType());
|
||||
}
|
||||
#endif // MOZ_IPC
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
#include "nsAutoRef.h"
|
||||
#include "nsThreadUtils.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/layers/ShadowLayers.h"
|
||||
#endif
|
||||
|
||||
class nsIWidget;
|
||||
|
||||
|
@ -69,7 +71,11 @@ class ReadbackProcessor;
|
|||
* between layers).
|
||||
*/
|
||||
class THEBES_API BasicLayerManager :
|
||||
#ifdef MOZ_IPC
|
||||
public ShadowLayerManager
|
||||
#else
|
||||
public LayerManager
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
@ -229,6 +235,7 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
class BasicShadowLayerManager : public BasicLayerManager,
|
||||
public ShadowLayerForwarder
|
||||
{
|
||||
|
@ -277,6 +284,7 @@ private:
|
|||
|
||||
LayerRefArray mKeepAlive;
|
||||
};
|
||||
#endif // MOZ_IPC
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,7 +35,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "gfxSharedImageSurface.h"
|
||||
#endif
|
||||
|
||||
#include "CanvasLayerOGL.h"
|
||||
|
||||
|
@ -251,6 +253,8 @@ CanvasLayerOGL::RenderLayer(int aPreviousDestination,
|
|||
}
|
||||
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
ShadowCanvasLayerOGL::ShadowCanvasLayerOGL(LayerManagerOGL* aManager)
|
||||
: ShadowCanvasLayer(aManager, nsnull)
|
||||
, LayerOGL(aManager)
|
||||
|
@ -338,3 +342,5 @@ ShadowCanvasLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
|||
|
||||
mOGLManager->BindAndDrawQuad(program);
|
||||
}
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
|
|
@ -38,8 +38,10 @@
|
|||
#ifndef GFX_CANVASLAYEROGL_H
|
||||
#define GFX_CANVASLAYEROGL_H
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif // MOZ_IPC
|
||||
|
||||
#include "LayerManagerOGL.h"
|
||||
#include "gfxASurface.h"
|
||||
|
@ -87,6 +89,7 @@ protected:
|
|||
PRPackedBool mNeedsYFlip;
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
// NB: eventually we'll have separate shadow canvas2d and shadow
|
||||
// canvas3d layers, but currently they look the same from the
|
||||
// perspective of the compositor process
|
||||
|
@ -127,6 +130,7 @@ private:
|
|||
|
||||
|
||||
};
|
||||
#endif // MOZ_IPC
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -80,12 +80,14 @@ ColorLayerOGL::RenderLayer(int,
|
|||
return RenderColorLayer(this, mOGLManager, aOffset);
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
void
|
||||
ShadowColorLayerOGL::RenderLayer(int,
|
||||
const nsIntPoint& aOffset)
|
||||
{
|
||||
return RenderColorLayer(this, mOGLManager, aOffset);
|
||||
}
|
||||
#endif // MOZ_IPC
|
||||
|
||||
|
||||
} /* layers */
|
||||
|
|
|
@ -38,8 +38,10 @@
|
|||
#ifndef GFX_COLORLAYEROGL_H
|
||||
#define GFX_COLORLAYEROGL_H
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif // MOZ_IPC
|
||||
|
||||
#include "LayerManagerOGL.h"
|
||||
|
||||
|
@ -67,6 +69,7 @@ public:
|
|||
const nsIntPoint& aOffset);
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
class ShadowColorLayerOGL : public ShadowColorLayer,
|
||||
public LayerOGL
|
||||
{
|
||||
|
@ -87,6 +90,7 @@ public:
|
|||
virtual void RenderLayer(int aPreviousFrameBuffer,
|
||||
const nsIntPoint& aOffset);
|
||||
};
|
||||
#endif // MOZ_IPC
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -343,6 +343,8 @@ ContainerLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
|||
}
|
||||
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
ShadowContainerLayerOGL::ShadowContainerLayerOGL(LayerManagerOGL *aManager)
|
||||
: ShadowContainerLayer(aManager, NULL)
|
||||
, LayerOGL(aManager)
|
||||
|
@ -389,6 +391,8 @@ ShadowContainerLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
|||
ContainerRender(this, aPreviousFrameBuffer, aOffset, mOGLManager);
|
||||
}
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -38,8 +38,10 @@
|
|||
#ifndef GFX_CONTAINERLAYEROGL_H
|
||||
#define GFX_CONTAINERLAYEROGL_H
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif
|
||||
|
||||
#include "Layers.h"
|
||||
#include "LayerManagerOGL.h"
|
||||
|
@ -98,6 +100,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
class ShadowContainerLayerOGL : public ShadowContainerLayer,
|
||||
public LayerOGL
|
||||
{
|
||||
|
@ -136,6 +139,7 @@ public:
|
|||
DefaultComputeEffectiveTransforms(aTransformToSurface);
|
||||
}
|
||||
};
|
||||
#endif // MOZ_IPC
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -36,7 +36,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "gfxSharedImageSurface.h"
|
||||
#endif
|
||||
|
||||
#include "ImageLayerOGL.h"
|
||||
#include "gfxImageSurface.h"
|
||||
|
@ -743,6 +745,8 @@ CairoImageOGL::SetData(const CairoImage::Data &aData)
|
|||
tex);
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
ShadowImageLayerOGL::ShadowImageLayerOGL(LayerManagerOGL* aManager)
|
||||
: ShadowImageLayer(aManager, nsnull)
|
||||
, LayerOGL(aManager)
|
||||
|
@ -833,6 +837,8 @@ ShadowImageLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
|||
mOGLManager->BindAndDrawQuad(program);
|
||||
}
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -38,8 +38,10 @@
|
|||
#ifndef GFX_IMAGELAYEROGL_H
|
||||
#define GFX_IMAGELAYEROGL_H
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif // MOZ_IPC
|
||||
|
||||
#include "LayerManagerOGL.h"
|
||||
#include "ImageLayers.h"
|
||||
|
@ -232,6 +234,7 @@ public:
|
|||
gl::ShaderProgramType mLayerProgram;
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
class ShadowImageLayerOGL : public ShadowImageLayer,
|
||||
public LayerOGL
|
||||
{
|
||||
|
@ -268,6 +271,7 @@ private:
|
|||
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -37,7 +37,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
#endif // MOZ_IPC
|
||||
|
||||
#include "LayerManagerOGL.h"
|
||||
#include "ThebesLayerOGL.h"
|
||||
|
@ -968,6 +970,8 @@ void LayerOGL::ApplyFilter(gfxPattern::GraphicsFilter aFilter)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
already_AddRefed<ShadowThebesLayer>
|
||||
LayerManagerOGL::CreateShadowThebesLayer()
|
||||
{
|
||||
|
@ -1018,6 +1022,20 @@ LayerManagerOGL::CreateShadowCanvasLayer()
|
|||
return nsRefPtr<ShadowCanvasLayerOGL>(new ShadowCanvasLayerOGL(this)).forget();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
already_AddRefed<ShadowThebesLayer>
|
||||
LayerManagerOGL::CreateShadowThebesLayer() { return nsnull; }
|
||||
already_AddRefed<ShadowContainerLayer>
|
||||
LayerManagerOGL::CreateShadowContainerLayer() { return nsnull; }
|
||||
already_AddRefed<ShadowImageLayer>
|
||||
LayerManagerOGL::CreateShadowImageLayer() { return nsnull; }
|
||||
already_AddRefed<ShadowColorLayer>
|
||||
LayerManagerOGL::CreateShadowColorLayer() { return nsnull; }
|
||||
already_AddRefed<ShadowCanvasLayer>
|
||||
LayerManagerOGL::CreateShadowCanvasLayer() { return nsnull; }
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -42,7 +42,9 @@
|
|||
|
||||
#include "Layers.h"
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/layers/ShadowLayers.h"
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
#include <windows.h>
|
||||
|
@ -82,7 +84,11 @@ class ShadowColorLayer;
|
|||
* the main thread.
|
||||
*/
|
||||
class THEBES_API LayerManagerOGL :
|
||||
#ifdef MOZ_IPC
|
||||
public ShadowLayerManager
|
||||
#else
|
||||
public LayerManager
|
||||
#endif
|
||||
{
|
||||
typedef mozilla::gl::GLContext GLContext;
|
||||
typedef mozilla::gl::ShaderProgramType ProgramType;
|
||||
|
|
|
@ -36,8 +36,10 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif
|
||||
|
||||
#include "ThebesLayerBuffer.h"
|
||||
#include "ThebesLayerOGL.h"
|
||||
|
@ -776,6 +778,8 @@ ThebesLayerOGL::IsEmpty()
|
|||
}
|
||||
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
class ShadowBufferOGL : public ThebesLayerBufferOGL
|
||||
{
|
||||
public:
|
||||
|
@ -948,6 +952,8 @@ ShadowThebesLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
|||
mBuffer->RenderTo(aOffset, mOGLManager);
|
||||
}
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -38,8 +38,10 @@
|
|||
#ifndef GFX_THEBESLAYEROGL_H
|
||||
#define GFX_THEBESLAYEROGL_H
|
||||
|
||||
#include "mozilla/layers/PLayers.h"
|
||||
#include "mozilla/layers/ShadowLayers.h"
|
||||
#ifdef MOZ_IPC
|
||||
# include "mozilla/layers/PLayers.h"
|
||||
# include "mozilla/layers/ShadowLayers.h"
|
||||
#endif
|
||||
|
||||
#include "Layers.h"
|
||||
#include "LayerManagerOGL.h"
|
||||
|
@ -84,6 +86,7 @@ private:
|
|||
nsRefPtr<Buffer> mBuffer;
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
class ShadowThebesLayerOGL : public ShadowThebesLayer,
|
||||
public LayerOGL
|
||||
{
|
||||
|
@ -114,6 +117,7 @@ public:
|
|||
private:
|
||||
nsRefPtr<ShadowBufferOGL> mBuffer;
|
||||
};
|
||||
#endif // MOZ_IPC
|
||||
|
||||
} /* layers */
|
||||
} /* mozilla */
|
||||
|
|
|
@ -47,8 +47,13 @@ EXPORTS = \
|
|||
GLContextProviderImpl.h \
|
||||
nsCoreAnimationSupport.h \
|
||||
EGLUtils.h \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
EXPORTS += \
|
||||
gfxSharedImageSurface.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
ifeq ($(MOZ_WIDGET_TOOLKIT),android)
|
||||
EXPORTS += \
|
||||
|
@ -180,7 +185,6 @@ CPPSRCS = \
|
|||
gfxHarfBuzzShaper.cpp \
|
||||
GLContext.cpp \
|
||||
GLContextProviderOSMesa.cpp \
|
||||
gfxSharedImageSurface.cpp \
|
||||
$(NULL)
|
||||
|
||||
# Are we targeting x86 or x64? If so, build gfxAlphaRecoverySSE2.cpp.
|
||||
|
@ -199,6 +203,12 @@ endif
|
|||
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC
|
||||
CPPSRCS += \
|
||||
gfxSharedImageSurface.cpp \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
SHARED_LIBRARY_LIBS += \
|
||||
../layers/$(LIB_PREFIX)layers.$(LIB_SUFFIX) \
|
||||
$(NULL)
|
||||
|
|
|
@ -35,8 +35,10 @@
|
|||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/dom/ContentChild.h"
|
||||
#include "nsXULAppAPI.h"
|
||||
#endif
|
||||
|
||||
#include <android/log.h>
|
||||
|
||||
|
@ -171,8 +173,10 @@ public:
|
|||
mMap.ops = nsnull;
|
||||
LOG("initializing the map failed");
|
||||
}
|
||||
#ifdef MOZ_IPC
|
||||
NS_ABORT_IF_FALSE(XRE_GetProcessType() == GeckoProcessType_Default,
|
||||
"StartupCacheFontNameCache should only be used in chrome procsess");
|
||||
#endif
|
||||
mCache = mozilla::scache::StartupCache::GetSingleton();
|
||||
Init();
|
||||
}
|
||||
|
|
|
@ -46,6 +46,8 @@ CHROMIUM_CONFIG_INCLUDED = 1
|
|||
|
||||
EXTRA_DEPS += $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
|
||||
ifdef MOZ_IPC # {
|
||||
|
||||
DEFINES += \
|
||||
-DEXCLUDE_SKIA_DEPENDENCIES \
|
||||
-DCHROMIUM_MOZILLA_BUILD \
|
||||
|
@ -106,3 +108,4 @@ OS_CXXFLAGS := $(filter-out -pedantic,$(OS_CXXFLAGS))
|
|||
endif # }
|
||||
endif # }
|
||||
|
||||
endif # }
|
|
@ -3404,35 +3404,36 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
|||
Decl(listenertype, listenervar.name) ],
|
||||
virtual=1))
|
||||
|
||||
switchontype = StmtSwitch(pvar)
|
||||
for managee in p.managesStmts:
|
||||
case = StmtBlock()
|
||||
actorvar = ExprVar('actor')
|
||||
manageeipdltype = managee.decl.type
|
||||
manageecxxtype = _cxxBareType(ipdl.type.ActorType(manageeipdltype),
|
||||
self.side)
|
||||
manageearray = p.managedVar(manageeipdltype, self.side)
|
||||
if not len(p.managesStmts):
|
||||
removemanagee.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||
else:
|
||||
switchontype = StmtSwitch(pvar)
|
||||
for managee in p.managesStmts:
|
||||
case = StmtBlock()
|
||||
actorvar = ExprVar('actor')
|
||||
manageeipdltype = managee.decl.type
|
||||
manageecxxtype = _cxxBareType(ipdl.type.ActorType(manageeipdltype),
|
||||
self.side)
|
||||
manageearray = p.managedVar(manageeipdltype, self.side)
|
||||
|
||||
case.addstmts([
|
||||
StmtDecl(Decl(manageecxxtype, actorvar.name),
|
||||
ExprCast(listenervar, manageecxxtype, static=1)),
|
||||
_abortIfFalse(
|
||||
_cxxArrayHasElementSorted(manageearray, actorvar),
|
||||
"actor not managed by this!"),
|
||||
Whitespace.NL,
|
||||
StmtExpr(_callCxxArrayRemoveSorted(manageearray, actorvar)),
|
||||
StmtExpr(ExprCall(_deallocMethod(manageeipdltype),
|
||||
args=[ actorvar ])),
|
||||
StmtReturn()
|
||||
])
|
||||
switchontype.addcase(CaseLabel(_protocolId(manageeipdltype).name),
|
||||
case)
|
||||
|
||||
default = StmtBlock()
|
||||
default.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||
switchontype.addcase(DefaultLabel(), default)
|
||||
|
||||
removemanagee.addstmt(switchontype)
|
||||
case.addstmts([
|
||||
StmtDecl(Decl(manageecxxtype, actorvar.name),
|
||||
ExprCast(listenervar, manageecxxtype, static=1)),
|
||||
_abortIfFalse(
|
||||
_cxxArrayHasElementSorted(manageearray, actorvar),
|
||||
"actor not managed by this!"),
|
||||
Whitespace.NL,
|
||||
StmtExpr(_callCxxArrayRemoveSorted(manageearray, actorvar)),
|
||||
StmtExpr(ExprCall(_deallocMethod(manageeipdltype),
|
||||
args=[ actorvar ])),
|
||||
StmtReturn()
|
||||
])
|
||||
switchontype.addcase(CaseLabel(_protocolId(manageeipdltype).name),
|
||||
case)
|
||||
default = StmtBlock()
|
||||
default.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||
switchontype.addcase(DefaultLabel(), default)
|
||||
removemanagee.addstmt(switchontype)
|
||||
|
||||
return [ register,
|
||||
registerid,
|
||||
|
|
|
@ -678,6 +678,8 @@ Clear(JSContext *cx, uintN argc, jsval *vp)
|
|||
return JS_TRUE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
static JSBool
|
||||
SendCommand(JSContext* cx,
|
||||
uintN argc,
|
||||
|
@ -722,6 +724,8 @@ GetChildGlobalObject(JSContext* cx,
|
|||
return JS_FALSE;
|
||||
}
|
||||
|
||||
#endif // MOZ_IPC
|
||||
|
||||
/*
|
||||
* JSContext option name to flag map. The option names are in alphabetical
|
||||
* order for better reporting.
|
||||
|
@ -856,8 +860,10 @@ static JSFunctionSpec glob_functions[] = {
|
|||
#ifdef DEBUG
|
||||
{"dumpHeap", DumpHeap, 5,0},
|
||||
#endif
|
||||
#ifdef MOZ_IPC
|
||||
{"sendCommand", SendCommand, 1,0},
|
||||
{"getChildGlobalObject", GetChildGlobalObject, 0,0},
|
||||
#endif
|
||||
#ifdef MOZ_CALLGRIND
|
||||
{"startCallgrind", js_StartCallgrind, 0,0},
|
||||
{"stopCallgrind", js_StopCallgrind, 0,0},
|
||||
|
@ -2013,8 +2019,10 @@ main(int argc, char **argv)
|
|||
JS_DestroyContext(cx);
|
||||
} // this scopes the nsCOMPtrs
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
if (!XRE_ShutdownTestShell())
|
||||
NS_ERROR("problem shutting down testshell");
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
// Get the crashreporter service while XPCOM is still active.
|
||||
|
|
|
@ -52,13 +52,16 @@ PARALLEL_DIRS = \
|
|||
tables \
|
||||
xul/base/public \
|
||||
xul/base/src \
|
||||
ipc \
|
||||
$(NULL)
|
||||
|
||||
ifdef NS_PRINTING
|
||||
PARALLEL_DIRS += printing
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC
|
||||
PARALLEL_DIRS += ipc
|
||||
endif
|
||||
|
||||
ifdef MOZ_MATHML
|
||||
PARALLEL_DIRS += \
|
||||
mathml \
|
||||
|
|
|
@ -148,7 +148,9 @@ FORCE_STATIC_LIB = 1
|
|||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
ifdef MOZ_IPC
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
endif
|
||||
|
||||
LOCAL_INCLUDES += \
|
||||
-I$(srcdir) \
|
||||
|
|
|
@ -3415,7 +3415,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
const PRUint8 aStyle,
|
||||
const gfxFloat aDescentLimit)
|
||||
{
|
||||
NS_ASSERTION(aStyle != DECORATION_STYLE_NONE, "aStyle is none");
|
||||
NS_ASSERTION(aStyle != NS_STYLE_TEXT_DECORATION_STYLE_NONE, "aStyle is none");
|
||||
|
||||
gfxRect rect =
|
||||
GetTextDecorationRectInternal(aPt, aLineSize, aAscent, aOffset,
|
||||
|
@ -3438,12 +3438,12 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
nsRefPtr<gfxPattern> oldPattern;
|
||||
|
||||
switch (aStyle) {
|
||||
case DECORATION_STYLE_SOLID:
|
||||
case DECORATION_STYLE_DOUBLE:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_SOLID:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE:
|
||||
oldLineWidth = aGfxContext->CurrentLineWidth();
|
||||
oldPattern = aGfxContext->GetPattern();
|
||||
break;
|
||||
case DECORATION_STYLE_DASHED: {
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DASHED: {
|
||||
aGfxContext->Save();
|
||||
contextIsSaved = PR_TRUE;
|
||||
aGfxContext->Clip(rect);
|
||||
|
@ -3455,7 +3455,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
rect.size.width += dashWidth;
|
||||
break;
|
||||
}
|
||||
case DECORATION_STYLE_DOTTED: {
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOTTED: {
|
||||
aGfxContext->Save();
|
||||
contextIsSaved = PR_TRUE;
|
||||
aGfxContext->Clip(rect);
|
||||
|
@ -3474,7 +3474,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
rect.size.width += dashWidth;
|
||||
break;
|
||||
}
|
||||
case DECORATION_STYLE_WAVY:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_WAVY:
|
||||
aGfxContext->Save();
|
||||
contextIsSaved = PR_TRUE;
|
||||
aGfxContext->Clip(rect);
|
||||
|
@ -3498,13 +3498,13 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
aGfxContext->SetColor(gfxRGBA(aColor));
|
||||
aGfxContext->SetLineWidth(lineHeight);
|
||||
switch (aStyle) {
|
||||
case DECORATION_STYLE_SOLID:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_SOLID:
|
||||
aGfxContext->NewPath();
|
||||
aGfxContext->MoveTo(rect.TopLeft());
|
||||
aGfxContext->LineTo(rect.TopRight());
|
||||
aGfxContext->Stroke();
|
||||
break;
|
||||
case DECORATION_STYLE_DOUBLE:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE:
|
||||
/**
|
||||
* We are drawing double line as:
|
||||
*
|
||||
|
@ -3527,14 +3527,14 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
aGfxContext->LineTo(rect.BottomRight());
|
||||
aGfxContext->Stroke();
|
||||
break;
|
||||
case DECORATION_STYLE_DOTTED:
|
||||
case DECORATION_STYLE_DASHED:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOTTED:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DASHED:
|
||||
aGfxContext->NewPath();
|
||||
aGfxContext->MoveTo(rect.TopLeft());
|
||||
aGfxContext->LineTo(rect.TopRight());
|
||||
aGfxContext->Stroke();
|
||||
break;
|
||||
case DECORATION_STYLE_WAVY: {
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_WAVY: {
|
||||
/**
|
||||
* We are drawing wavy line as:
|
||||
*
|
||||
|
@ -3616,7 +3616,7 @@ nsCSSRendering::GetTextDecorationRect(nsPresContext* aPresContext,
|
|||
const gfxFloat aDescentLimit)
|
||||
{
|
||||
NS_ASSERTION(aPresContext, "aPresContext is null");
|
||||
NS_ASSERTION(aStyle != DECORATION_STYLE_NONE, "aStyle is none");
|
||||
NS_ASSERTION(aStyle != NS_STYLE_TEXT_DECORATION_STYLE_NONE, "aStyle is none");
|
||||
|
||||
gfxRect rect =
|
||||
GetTextDecorationRectInternal(gfxPoint(0, 0), aLineSize, aAscent, aOffset,
|
||||
|
@ -3639,9 +3639,10 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
|||
const PRUint8 aStyle,
|
||||
const gfxFloat aDescentLimit)
|
||||
{
|
||||
NS_ASSERTION(aStyle <= DECORATION_STYLE_WAVY, "Invalid aStyle value");
|
||||
NS_ASSERTION(aStyle <= NS_STYLE_TEXT_DECORATION_STYLE_WAVY,
|
||||
"Invalid aStyle value");
|
||||
|
||||
if (aStyle == DECORATION_STYLE_NONE)
|
||||
if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_NONE)
|
||||
return gfxRect(0, 0, 0, 0);
|
||||
|
||||
PRBool canLiftUnderline = aDescentLimit >= 0.0;
|
||||
|
@ -3658,7 +3659,7 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
|||
|
||||
gfxFloat suggestedMaxRectHeight = NS_MAX(NS_MIN(ascent, descentLimit), 1.0);
|
||||
r.size.height = lineHeight;
|
||||
if (aStyle == DECORATION_STYLE_DOUBLE) {
|
||||
if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE) {
|
||||
/**
|
||||
* We will draw double line as:
|
||||
*
|
||||
|
@ -3684,7 +3685,7 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
|||
r.size.height = NS_MAX(suggestedMaxRectHeight, lineHeight * 2.0 + 1.0);
|
||||
}
|
||||
}
|
||||
} else if (aStyle == DECORATION_STYLE_WAVY) {
|
||||
} else if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_WAVY) {
|
||||
/**
|
||||
* We will draw wavy line as:
|
||||
*
|
||||
|
|
|
@ -286,15 +286,6 @@ struct nsCSSRendering {
|
|||
PRUint8 aEndBevelSide = 0,
|
||||
nscoord aEndBevelOffset = 0);
|
||||
|
||||
enum {
|
||||
DECORATION_STYLE_NONE = 0,
|
||||
DECORATION_STYLE_SOLID = 1,
|
||||
DECORATION_STYLE_DOTTED = 2,
|
||||
DECORATION_STYLE_DASHED = 3,
|
||||
DECORATION_STYLE_DOUBLE = 4,
|
||||
DECORATION_STYLE_WAVY = 5
|
||||
};
|
||||
|
||||
/**
|
||||
* Function for painting the decoration lines for the text.
|
||||
* NOTE: aPt, aLineSize, aAscent and aOffset are non-rounded device pixels,
|
||||
|
@ -313,8 +304,8 @@ struct nsCSSRendering {
|
|||
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
||||
* @param aStyle the style of the decoration line (See above
|
||||
* enum names).
|
||||
* @param aStyle the style of the decoration line such as
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_*.
|
||||
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
||||
* underline overflows from the descent space,
|
||||
* the underline should be lifted up as far as
|
||||
|
@ -353,8 +344,8 @@ struct nsCSSRendering {
|
|||
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
||||
* @param aStyle the style of the decoration line (See above
|
||||
* enum names).
|
||||
* @param aStyle the style of the decoration line such as
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_*.
|
||||
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
||||
* underline overflows from the descent space,
|
||||
* the underline should be lifted up as far as
|
||||
|
|
|
@ -1701,6 +1701,8 @@ nsDisplayOwnLayer::BuildLayer(nsDisplayListBuilder* aBuilder,
|
|||
return layer.forget();
|
||||
}
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
|
||||
nsDisplayScrollLayer::nsDisplayScrollLayer(nsDisplayListBuilder* aBuilder,
|
||||
nsDisplayList* aList,
|
||||
nsIFrame* aForFrame,
|
||||
|
@ -1780,6 +1782,8 @@ nsDisplayScrollLayer::~nsDisplayScrollLayer()
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
nsDisplayClip::nsDisplayClip(nsDisplayListBuilder* aBuilder,
|
||||
nsIFrame* aFrame, nsDisplayItem* aItem,
|
||||
const nsRect& aRect)
|
||||
|
|
|
@ -1769,6 +1769,7 @@ public:
|
|||
NS_DISPLAY_DECL_NAME("OwnLayer", TYPE_OWN_LAYER)
|
||||
};
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
/**
|
||||
* This creates a layer for the given list of items, whose visibility is
|
||||
* determined by the displayport for the given frame instead of what is
|
||||
|
@ -1816,6 +1817,7 @@ public:
|
|||
private:
|
||||
nsIFrame* mViewportFrame;
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* nsDisplayClip can clip a list of items, but we take a single item
|
||||
|
|
|
@ -626,6 +626,15 @@ static inline mozilla::css::Side operator++(mozilla::css::Side& side, int) {
|
|||
#define NS_STYLE_TEXT_DECORATION_OVERRIDE_ALL 0x20
|
||||
#define NS_STYLE_TEXT_DECORATION_LINES_MASK (NS_STYLE_TEXT_DECORATION_UNDERLINE | NS_STYLE_TEXT_DECORATION_OVERLINE | NS_STYLE_TEXT_DECORATION_LINE_THROUGH)
|
||||
|
||||
// See nsStyleText
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_NONE 0 // not in CSS spec, mapped to -moz-none
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_DOTTED 1
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_DASHED 2
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_SOLID 3
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE 4
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_WAVY 5
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_MAX NS_STYLE_TEXT_DECORATION_STYLE_WAVY
|
||||
|
||||
// See nsStyleText
|
||||
#define NS_STYLE_TEXT_TRANSFORM_NONE 0
|
||||
#define NS_STYLE_TEXT_TRANSFORM_CAPITALIZE 1
|
||||
|
|
|
@ -78,11 +78,17 @@ EXPORTS = \
|
|||
nsLayoutStatics.h \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_IPC
|
||||
GKIPCLIB=../ipc/$(LIB_PREFIX)gkipc_s.$(LIB_SUFFIX)
|
||||
else
|
||||
GKIPCLIB=$(NULL)
|
||||
endif
|
||||
|
||||
SHARED_LIBRARY_LIBS = \
|
||||
../base/$(LIB_PREFIX)gkbase_s.$(LIB_SUFFIX) \
|
||||
../forms/$(LIB_PREFIX)gkforms_s.$(LIB_SUFFIX) \
|
||||
../generic/$(LIB_PREFIX)gkgeneric_s.$(LIB_SUFFIX) \
|
||||
../ipc/$(LIB_PREFIX)gkipc_s.$(LIB_SUFFIX) \
|
||||
$(GKIPCLIB) \
|
||||
../style/$(LIB_PREFIX)gkstyle_s.$(LIB_SUFFIX) \
|
||||
../tables/$(LIB_PREFIX)gktable_s.$(LIB_SUFFIX) \
|
||||
../xul/base/src/$(LIB_PREFIX)gkxulbase_s.$(LIB_SUFFIX) \
|
||||
|
@ -294,8 +300,10 @@ ifdef MOZ_NATIVE_LIBVPX
|
|||
EXTRA_DSO_LDOPTS += $(MOZ_LIBVPX_LIBS)
|
||||
endif
|
||||
|
||||
ifdef MOZ_IPC
|
||||
include $(topsrcdir)/config/config.mk
|
||||
include $(topsrcdir)/ipc/chromium/chromium-config.mk
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
|
|
|
@ -36,7 +36,9 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "base/basictypes.h"
|
||||
#endif
|
||||
|
||||
#include "xpcmodule.h"
|
||||
#include "mozilla/ModuleUtils.h"
|
||||
|
|
|
@ -239,6 +239,8 @@ input > .anonymous-div {
|
|||
/* XXXldb I'm not sure if we really want the 'text-decoration: inherit',
|
||||
but it's needed to make 'text-decoration' "work" on text inputs. */
|
||||
text-decoration: inherit;
|
||||
-moz-text-decoration-color: inherit;
|
||||
-moz-text-decoration-style: inherit;
|
||||
}
|
||||
|
||||
input:disabled,
|
||||
|
|
|
@ -6076,6 +6076,7 @@ nsBlockFrame::PaintTextDecorationLine(gfxContext* aCtx,
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
@ -6096,7 +6097,7 @@ nsBlockFrame::PaintTextDecorationLine(gfxContext* aCtx,
|
|||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, aColor, pt, size,
|
||||
PresContext()->AppUnitsToGfxUnits(aLine->GetAscent()),
|
||||
aOffset, aDecoration, nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
aOffset, aDecoration, aStyle);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -369,6 +369,7 @@ protected:
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
|
|
@ -75,9 +75,9 @@ class nsDisplayTextDecoration : public nsDisplayItem {
|
|||
public:
|
||||
nsDisplayTextDecoration(nsDisplayListBuilder* aBuilder,
|
||||
nsHTMLContainerFrame* aFrame, PRUint8 aDecoration,
|
||||
nscolor aColor, nsLineBox* aLine)
|
||||
nscolor aColor, PRUint8 aStyle, nsLineBox* aLine)
|
||||
: nsDisplayItem(aBuilder, aFrame), mLine(aLine), mColor(aColor),
|
||||
mDecoration(aDecoration) {
|
||||
mDecoration(aDecoration), mStyle(aStyle) {
|
||||
MOZ_COUNT_CTOR(nsDisplayTextDecoration);
|
||||
}
|
||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
|
@ -100,6 +100,7 @@ private:
|
|||
nsLineBox* mLine;
|
||||
nscolor mColor;
|
||||
PRUint8 mDecoration;
|
||||
PRUint8 mStyle;
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -136,16 +137,16 @@ nsDisplayTextDecoration::Paint(nsDisplayListBuilder* aBuilder,
|
|||
if (mDecoration == NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||
gfxFloat underlineOffset = fontGroup->GetUnderlineOffset();
|
||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||
underlineOffset, ascent,
|
||||
mStyle, underlineOffset, ascent,
|
||||
metrics.underlineSize, mDecoration);
|
||||
} else if (mDecoration == NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||
metrics.maxAscent, ascent,
|
||||
mStyle, metrics.maxAscent, ascent,
|
||||
metrics.underlineSize, mDecoration);
|
||||
} else {
|
||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||
metrics.strikeoutOffset, ascent,
|
||||
metrics.strikeoutSize, mDecoration);
|
||||
mStyle, metrics.strikeoutOffset,
|
||||
ascent, metrics.strikeoutSize, mDecoration);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -159,10 +160,12 @@ class nsDisplayTextShadow : public nsDisplayItem {
|
|||
public:
|
||||
nsDisplayTextShadow(nsDisplayListBuilder* aBuilder,
|
||||
nsHTMLContainerFrame* aFrame,
|
||||
const PRUint8 aDecoration,
|
||||
const PRUint8 aDecoration, PRUint8 aUnderlineStyle,
|
||||
PRUint8 aOverlineStyle, PRUint8 aStrikeThroughStyle,
|
||||
nsLineBox* aLine)
|
||||
: nsDisplayItem(aBuilder, aFrame), mLine(aLine),
|
||||
mDecorationFlags(aDecoration) {
|
||||
mDecorationFlags(aDecoration), mUnderlineStyle(aUnderlineStyle),
|
||||
mOverlineStyle(aOverlineStyle), mStrikeThroughStyle(aStrikeThroughStyle) {
|
||||
MOZ_COUNT_CTOR(nsDisplayTextShadow);
|
||||
}
|
||||
virtual ~nsDisplayTextShadow() {
|
||||
|
@ -176,6 +179,9 @@ public:
|
|||
private:
|
||||
nsLineBox* mLine;
|
||||
PRUint8 mDecorationFlags;
|
||||
PRUint8 mUnderlineStyle;
|
||||
PRUint8 mOverlineStyle;
|
||||
PRUint8 mStrikeThroughStyle;
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -243,22 +249,20 @@ nsDisplayTextShadow::Paint(nsDisplayListBuilder* aBuilder,
|
|||
gfxSize size(lineWidth, metrics.underlineSize);
|
||||
underlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||
ascent, underlineOffset,
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE, mUnderlineStyle);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
gfxSize size(lineWidth, metrics.underlineSize);
|
||||
overlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||
ascent, metrics.maxAscent,
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE, mOverlineStyle);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||
gfxSize size(lineWidth, metrics.strikeoutSize);
|
||||
lineThroughRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||
ascent, metrics.strikeoutOffset,
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
mStrikeThroughStyle);
|
||||
}
|
||||
|
||||
for (PRUint32 i = shadowList->Length(); i > 0; --i) {
|
||||
|
@ -302,18 +306,19 @@ nsDisplayTextShadow::Paint(nsDisplayListBuilder* aBuilder,
|
|||
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||
underlineOffset, ascent,
|
||||
mUnderlineStyle, underlineOffset, ascent,
|
||||
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_UNDERLINE);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||
metrics.maxAscent, ascent,
|
||||
mOverlineStyle, metrics.maxAscent, ascent,
|
||||
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_OVERLINE);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||
metrics.strikeoutOffset, ascent,
|
||||
metrics.strikeoutSize, NS_STYLE_TEXT_DECORATION_LINE_THROUGH);
|
||||
mStrikeThroughStyle, metrics.strikeoutOffset,
|
||||
ascent, metrics.strikeoutSize,
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH);
|
||||
}
|
||||
|
||||
contextBoxBlur.DoPaint();
|
||||
|
@ -350,9 +355,11 @@ nsHTMLContainerFrame::DisplayTextDecorations(nsDisplayListBuilder* aBuilder,
|
|||
// behind children, line-through in front. For Quirks mode, see
|
||||
// nsTextFrame::PaintTextDecorations. (See bug 1777.)
|
||||
nscolor underColor, overColor, strikeColor;
|
||||
PRUint8 underStyle, overStyle, strikeStyle;
|
||||
PRUint8 decorations = NS_STYLE_TEXT_DECORATION_NONE;
|
||||
GetTextDecorations(PresContext(), aLine != nsnull, decorations, underColor,
|
||||
overColor, strikeColor);
|
||||
overColor, strikeColor, underStyle, overStyle,
|
||||
strikeStyle);
|
||||
|
||||
if (decorations == NS_STYLE_TEXT_DECORATION_NONE)
|
||||
return NS_OK;
|
||||
|
@ -362,26 +369,27 @@ nsHTMLContainerFrame::DisplayTextDecorations(nsDisplayListBuilder* aBuilder,
|
|||
// list, underneath the text and all decorations.
|
||||
if (GetStyleText()->mTextShadow) {
|
||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextShadow(aBuilder, this, decorations, aLine));
|
||||
nsDisplayTextShadow(aBuilder, this, decorations, underStyle, overStyle,
|
||||
strikeStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
if (decorations & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||
underColor, aLine));
|
||||
underColor, underStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
if (decorations & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
overColor, aLine));
|
||||
overColor, overStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
if (decorations & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||
rv = aAboveTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
strikeColor, aLine));
|
||||
strikeColor, strikeStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
return NS_OK;
|
||||
|
@ -424,6 +432,7 @@ nsHTMLContainerFrame::PaintTextDecorationLine(
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
@ -442,7 +451,7 @@ nsHTMLContainerFrame::PaintTextDecorationLine(
|
|||
PresContext()->AppUnitsToGfxUnits(bp.top + aPt.y));
|
||||
gfxSize size(PresContext()->AppUnitsToGfxUnits(innerWidth), aSize);
|
||||
nsCSSRendering::PaintDecorationLine(aCtx, aColor, pt, size, aAscent, aOffset,
|
||||
aDecoration, nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
aDecoration, aStyle);
|
||||
}
|
||||
|
||||
/*virtual*/ void
|
||||
|
@ -461,7 +470,10 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
|||
PRUint8& aDecorations,
|
||||
nscolor& aUnderColor,
|
||||
nscolor& aOverColor,
|
||||
nscolor& aStrikeColor)
|
||||
nscolor& aStrikeColor,
|
||||
PRUint8& aUnderStyle,
|
||||
PRUint8& aOverStyle,
|
||||
PRUint8& aStrikeStyle)
|
||||
{
|
||||
aDecorations = NS_STYLE_TEXT_DECORATION_NONE;
|
||||
if (!mStyleContext->HasTextDecorations()) {
|
||||
|
@ -471,13 +483,15 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
|||
}
|
||||
|
||||
if (!aIsBlock) {
|
||||
aDecorations = this->GetStyleTextReset()->mTextDecoration &
|
||||
const nsStyleTextReset* styleTextReset = this->GetStyleTextReset();
|
||||
aDecorations = styleTextReset->mTextDecoration &
|
||||
NS_STYLE_TEXT_DECORATION_LINES_MASK;
|
||||
if (aDecorations) {
|
||||
nscolor color = this->GetVisitedDependentColor(eCSSProperty_color);
|
||||
aUnderColor = color;
|
||||
aOverColor = color;
|
||||
aStrikeColor = color;
|
||||
nscolor color =
|
||||
this->GetVisitedDependentColor(eCSSProperty_text_decoration_color);
|
||||
aUnderColor = aOverColor = aStrikeColor = color;
|
||||
aUnderStyle = aOverStyle = aStrikeStyle =
|
||||
styleTextReset->GetDecorationStyle();
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -491,23 +505,29 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
|||
|
||||
// walk tree
|
||||
for (nsIFrame* frame = this; frame; frame = frame->GetParent()) {
|
||||
PRUint8 decors = frame->GetStyleTextReset()->mTextDecoration & decorMask;
|
||||
const nsStyleTextReset* styleTextReset = frame->GetStyleTextReset();
|
||||
PRUint8 decors = styleTextReset->mTextDecoration & decorMask;
|
||||
if (decors) {
|
||||
// A *new* text-decoration is found.
|
||||
nscolor color = frame->GetVisitedDependentColor(eCSSProperty_color);
|
||||
nscolor color = frame->GetVisitedDependentColor(
|
||||
eCSSProperty_text_decoration_color);
|
||||
PRUint8 style = styleTextReset->GetDecorationStyle();
|
||||
|
||||
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & decors) {
|
||||
aUnderColor = color;
|
||||
aUnderStyle = style;
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
aDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_OVERLINE & decors) {
|
||||
aOverColor = color;
|
||||
aOverStyle = style;
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
aDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & decors) {
|
||||
aStrikeColor = color;
|
||||
aStrikeStyle = style;
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
aDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
}
|
||||
|
|
|
@ -144,6 +144,18 @@ protected:
|
|||
* in aDecoration is set. It is undefined otherwise.
|
||||
* @param aStrikeColor The color of strike-through if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* @param aUnderStyle The style of underline if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* The style is one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* @param aOverStyle The style of overline if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* The style is one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* @param aStrikeStyle The style of strike-through if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* The style is one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* NOTE: This function assigns NS_STYLE_TEXT_DECORATION_NONE to
|
||||
* aDecorations for text-less frames. See bug 20163 for
|
||||
* details.
|
||||
|
@ -153,7 +165,10 @@ protected:
|
|||
PRUint8& aDecorations,
|
||||
nscolor& aUnderColor,
|
||||
nscolor& aOverColor,
|
||||
nscolor& aStrikeColor);
|
||||
nscolor& aStrikeColor,
|
||||
PRUint8& aUnderStyle,
|
||||
PRUint8& aOverStyle,
|
||||
PRUint8& aStrikeStyle);
|
||||
|
||||
/**
|
||||
* Function that does the actual drawing of the textdecoration.
|
||||
|
@ -161,6 +176,8 @@ protected:
|
|||
* @param aCtx the Thebes graphics context to draw on
|
||||
* @param aLine the line, or nsnull if this is an inline frame
|
||||
* @param aColor the color of the text-decoration
|
||||
* @param aStyle the style of the text-decoration, i.e., one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* @param aAscent ascent of the font from which the
|
||||
* text-decoration was derived.
|
||||
* @param aOffset distance *above* baseline where the
|
||||
|
@ -177,6 +194,7 @@ protected:
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
|
|
@ -55,7 +55,9 @@
|
|||
#undef slots
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/plugins/PluginMessageUtils.h"
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_X11
|
||||
#include <cairo-xlib.h>
|
||||
|
@ -238,7 +240,9 @@ static PRLogModuleInfo *nsObjectFrameLM = PR_NewLogModule("nsObjectFrame");
|
|||
#endif
|
||||
|
||||
using namespace mozilla;
|
||||
#ifdef MOZ_IPC
|
||||
using namespace mozilla::plugins;
|
||||
#endif
|
||||
using namespace mozilla::layers;
|
||||
|
||||
// special class for handeling DOM context menu events because for
|
||||
|
@ -2351,6 +2355,7 @@ nsObjectFrame::PaintPlugin(nsDisplayListBuilder* aBuilder,
|
|||
nsPoint origin;
|
||||
|
||||
gfxWindowsNativeDrawing nativeDraw(ctx, frameGfxRect);
|
||||
#ifdef MOZ_IPC
|
||||
if (nativeDraw.IsDoublePass()) {
|
||||
// OOP plugin specific: let the shim know before we paint if we are doing a
|
||||
// double pass render. If this plugin isn't oop, the register window message
|
||||
|
@ -2362,6 +2367,7 @@ nsObjectFrame::PaintPlugin(nsDisplayListBuilder* aBuilder,
|
|||
if (pluginEvent.event)
|
||||
inst->HandleEvent(&pluginEvent, nsnull);
|
||||
}
|
||||
#endif
|
||||
do {
|
||||
HDC hdc = nativeDraw.BeginNativeDrawing();
|
||||
if (!hdc)
|
||||
|
|
|
@ -43,8 +43,10 @@
|
|||
* as <frame>, <iframe>, and some <object>s
|
||||
*/
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
#include "mozilla/layout/RenderFrameParent.h"
|
||||
using mozilla::layout::RenderFrameParent;
|
||||
#endif
|
||||
|
||||
#include "nsSubDocumentFrame.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
@ -275,6 +277,7 @@ nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
|||
if (!mInnerView)
|
||||
return NS_OK;
|
||||
|
||||
#ifdef MOZ_IPC
|
||||
nsFrameLoader* frameLoader = FrameLoader();
|
||||
if (frameLoader) {
|
||||
RenderFrameParent* rfp = frameLoader->GetCurrentRemoteFrame();
|
||||
|
@ -282,6 +285,7 @@ nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
|||
return rfp->BuildDisplayList(aBuilder, this, aDirtyRect, aLists);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
nsIView* subdocView = mInnerView->GetFirstChild();
|
||||
if (!subdocView)
|
||||
|
|
|
@ -432,13 +432,19 @@ protected:
|
|||
|
||||
struct TextDecorations {
|
||||
PRUint8 mDecorations;
|
||||
PRUint8 mOverStyle;
|
||||
PRUint8 mUnderStyle;
|
||||
PRUint8 mStrikeStyle;
|
||||
nscolor mOverColor;
|
||||
nscolor mUnderColor;
|
||||
nscolor mStrikeColor;
|
||||
|
||||
TextDecorations() :
|
||||
mDecorations(0), mOverColor(NS_RGB(0, 0, 0)),
|
||||
mUnderColor(NS_RGB(0, 0, 0)), mStrikeColor(NS_RGB(0, 0, 0))
|
||||
mDecorations(0), mOverStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||
mUnderStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||
mStrikeStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||
mOverColor(NS_RGB(0, 0, 0)), mUnderColor(NS_RGB(0, 0, 0)),
|
||||
mStrikeColor(NS_RGB(0, 0, 0))
|
||||
{ }
|
||||
|
||||
PRBool HasDecorationlines() {
|
||||
|
|
|
@ -3465,15 +3465,6 @@ static StyleIDs SelectionStyleIDs[] = {
|
|||
nsILookAndFeel::eMetricFloat_SpellCheckerUnderlineRelativeSize }
|
||||
};
|
||||
|
||||
static PRUint8 sUnderlineStyles[] = {
|
||||
nsCSSRendering::DECORATION_STYLE_NONE, // NS_UNDERLINE_STYLE_NONE 0
|
||||
nsCSSRendering::DECORATION_STYLE_DOTTED, // NS_UNDERLINE_STYLE_DOTTED 1
|
||||
nsCSSRendering::DECORATION_STYLE_DASHED, // NS_UNDERLINE_STYLE_DASHED 2
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID, // NS_UNDERLINE_STYLE_SOLID 3
|
||||
nsCSSRendering::DECORATION_STYLE_DOUBLE, // NS_UNDERLINE_STYLE_DOUBLE 4
|
||||
nsCSSRendering::DECORATION_STYLE_WAVY // NS_UNDERLINE_STYLE_WAVY 5
|
||||
};
|
||||
|
||||
void
|
||||
nsTextPaintStyle::InitSelectionStyle(PRInt32 aIndex)
|
||||
{
|
||||
|
@ -3546,9 +3537,9 @@ nsTextPaintStyle::GetSelectionUnderline(nsPresContext* aPresContext,
|
|||
|
||||
look->GetColor(styleID.mLine, color);
|
||||
look->GetMetric(styleID.mLineStyle, style);
|
||||
if (!NS_IS_VALID_UNDERLINE_STYLE(style)) {
|
||||
if (style > NS_STYLE_TEXT_DECORATION_STYLE_MAX) {
|
||||
NS_ERROR("Invalid underline style value is specified");
|
||||
style = NS_UNDERLINE_STYLE_SOLID;
|
||||
style = NS_STYLE_TEXT_DECORATION_STYLE_SOLID;
|
||||
}
|
||||
look->GetMetric(styleID.mLineRelativeSize, size);
|
||||
|
||||
|
@ -3558,9 +3549,9 @@ nsTextPaintStyle::GetSelectionUnderline(nsPresContext* aPresContext,
|
|||
*aLineColor = color;
|
||||
}
|
||||
*aRelativeSize = size;
|
||||
*aStyle = sUnderlineStyles[style];
|
||||
*aStyle = style;
|
||||
|
||||
return sUnderlineStyles[style] != nsCSSRendering::DECORATION_STYLE_NONE &&
|
||||
return style != NS_STYLE_TEXT_DECORATION_STYLE_NONE &&
|
||||
color != NS_TRANSPARENT &&
|
||||
size > 0.0f;
|
||||
}
|
||||
|
@ -4270,13 +4261,15 @@ nsTextFrame::GetTextDecorations(nsPresContext* aPresContext)
|
|||
// This handles the <a href="blah.html"><font color="green">La
|
||||
// la la</font></a> case. The link underline should be green.
|
||||
useOverride = PR_TRUE;
|
||||
overrideColor = context->GetVisitedDependentColor(eCSSProperty_color);
|
||||
overrideColor = context->GetVisitedDependentColor(
|
||||
eCSSProperty_text_decoration_color);
|
||||
}
|
||||
|
||||
// FIXME: see above (remove this check)
|
||||
PRUint8 useDecorations = decorMask & styleText->mTextDecoration;
|
||||
if (useDecorations) {// a decoration defined here
|
||||
nscolor color = context->GetVisitedDependentColor(eCSSProperty_color);
|
||||
nscolor color = context->GetVisitedDependentColor(
|
||||
eCSSProperty_text_decoration_color);
|
||||
|
||||
// FIXME: We also need to record the thickness and position
|
||||
// metrics appropriate to this element (at least in standards
|
||||
|
@ -4289,16 +4282,19 @@ nsTextFrame::GetTextDecorations(nsPresContext* aPresContext)
|
|||
// This way we move the decorations for relative positioning.
|
||||
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & useDecorations) {
|
||||
decorations.mUnderColor = useOverride ? overrideColor : color;
|
||||
decorations.mUnderStyle = styleText->GetDecorationStyle();
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_OVERLINE & useDecorations) {
|
||||
decorations.mOverColor = useOverride ? overrideColor : color;
|
||||
decorations.mOverStyle = styleText->GetDecorationStyle();
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & useDecorations) {
|
||||
decorations.mStrikeColor = useOverride ? overrideColor : color;
|
||||
decorations.mStrikeStyle = styleText->GetDecorationStyle();
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
}
|
||||
|
@ -4393,8 +4389,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
|||
size.height = fontMetrics.underlineSize;
|
||||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, lineColor, pt, size, ascent, fontMetrics.maxAscent,
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE, decorations.mOverStyle);
|
||||
}
|
||||
if (decorations.HasUnderline()) {
|
||||
lineColor = aOverrideColor ? *aOverrideColor : decorations.mUnderColor;
|
||||
|
@ -4402,8 +4397,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
|||
gfxFloat offset = aProvider.GetFontGroup()->GetUnderlineOffset();
|
||||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, lineColor, pt, size, ascent, offset,
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE, decorations.mUnderStyle);
|
||||
}
|
||||
if (decorations.HasStrikeout()) {
|
||||
lineColor = aOverrideColor ? *aOverrideColor : decorations.mStrikeColor;
|
||||
|
@ -4411,8 +4405,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
|||
gfxFloat offset = fontMetrics.strikeoutOffset;
|
||||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, lineColor, pt, size, ascent, offset,
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH, decorations.mStrikeStyle);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4440,30 +4433,6 @@ static const SelectionType SelectionTypesWithDecorations =
|
|||
nsISelectionController::SELECTION_IME_CONVERTEDTEXT |
|
||||
nsISelectionController::SELECTION_IME_SELECTEDCONVERTEDTEXT;
|
||||
|
||||
static PRUint8
|
||||
GetTextDecorationStyle(const nsTextRangeStyle &aRangeStyle)
|
||||
{
|
||||
NS_PRECONDITION(aRangeStyle.IsLineStyleDefined(),
|
||||
"aRangeStyle.mLineStyle have to be defined");
|
||||
switch (aRangeStyle.mLineStyle) {
|
||||
case nsTextRangeStyle::LINESTYLE_NONE:
|
||||
return nsCSSRendering::DECORATION_STYLE_NONE;
|
||||
case nsTextRangeStyle::LINESTYLE_SOLID:
|
||||
return nsCSSRendering::DECORATION_STYLE_SOLID;
|
||||
case nsTextRangeStyle::LINESTYLE_DOTTED:
|
||||
return nsCSSRendering::DECORATION_STYLE_DOTTED;
|
||||
case nsTextRangeStyle::LINESTYLE_DASHED:
|
||||
return nsCSSRendering::DECORATION_STYLE_DASHED;
|
||||
case nsTextRangeStyle::LINESTYLE_DOUBLE:
|
||||
return nsCSSRendering::DECORATION_STYLE_DOUBLE;
|
||||
case nsTextRangeStyle::LINESTYLE_WAVY:
|
||||
return nsCSSRendering::DECORATION_STYLE_WAVY;
|
||||
default:
|
||||
NS_WARNING("Requested underline style is not valid");
|
||||
return nsCSSRendering::DECORATION_STYLE_SOLID;
|
||||
}
|
||||
}
|
||||
|
||||
static gfxFloat
|
||||
ComputeSelectionUnderlineHeight(nsPresContext* aPresContext,
|
||||
const gfxFont::Metrics& aFontMetrics,
|
||||
|
@ -4549,7 +4518,7 @@ static void DrawSelectionDecorations(gfxContext* aContext, SelectionType aType,
|
|||
if (aRangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
||||
return;
|
||||
}
|
||||
style = GetTextDecorationStyle(aRangeStyle);
|
||||
style = aRangeStyle.mLineStyle;
|
||||
relativeSize = aRangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
||||
} else if (!weDefineSelectionUnderline) {
|
||||
// There is no underline style definition.
|
||||
|
@ -5358,7 +5327,7 @@ nsTextFrame::CombineSelectionUnderlineRect(nsPresContext* aPresContext,
|
|||
rangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
||||
continue;
|
||||
}
|
||||
style = GetTextDecorationStyle(rangeStyle);
|
||||
style = rangeStyle.mLineStyle;
|
||||
relativeSize = rangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
||||
} else if (!nsTextPaintStyle::GetSelectionUnderline(aPresContext, index,
|
||||
nsnull, &relativeSize,
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
<p style="color: #008000;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: #0000FF;">This blue text has green decoration lines</span>
|
||||
</p>
|
||||
<p style="color: yellow;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: red;">This red text has yellow decoration lines</span>
|
||||
</p>
|
||||
<p style="color: red; text-decoration: underline line-through overline;">
|
||||
<span style="color: #0000FF">This blue text has red lines</span>
|
||||
</p>
|
||||
<p style="color: orange;">
|
||||
This orange text has transparent lines
|
||||
</p>
|
||||
<p>
|
||||
Here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: blue;">
|
||||
this blue text has green decoration lines</span></span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: red;">
|
||||
This is red paragraph and here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: red;">here are green decoration lines</span></span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: purple;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is purple paragraph and here are decoration lines of current color, but
|
||||
<span style="font-size: 2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: purple;">here are red decoration lines</span></span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is green paragraph and here are decoration lines of current color, and
|
||||
<span style="font-size: 2em;">
|
||||
here is specified red decoration color but has current color lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: blue;">
|
||||
here is red text with blue decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph and decoration color is specified as green,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
here is red text with green decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче