Merge from tracemonkey to jsdbg2.

This commit is contained in:
Jason Orendorff 2011-05-04 12:13:58 -05:00
commit 03415943ee
899 changed files with 13376 additions and 17700 deletions

View File

@ -0,0 +1,203 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=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
* Novell, Inc.
* Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Brad Taylor <brad@getcoded.net> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either 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 <atk/atk.h>
#include "AtkSocketAccessible.h"
#include "nsMai.h"
#include "nsMaiInterfaceComponent.h"
void (*AtkSocketAccessible::g_atk_socket_embed) (AtkSocket*, gchar*) = NULL;
GType AtkSocketAccessible::g_atk_socket_type = G_TYPE_INVALID;
const char* AtkSocketAccessible::sATKSocketEmbedSymbol = "atk_socket_embed";
const char* AtkSocketAccessible::sATKSocketGetTypeSymbol = "atk_socket_get_type";
bool AtkSocketAccessible::gCanEmbed = FALSE;
/* MaiAtkSocket */
#define MAI_TYPE_ATK_SOCKET (mai_atk_socket_get_type ())
#define MAI_ATK_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),\
MAI_TYPE_ATK_SOCKET, MaiAtkSocket))
#define MAI_IS_ATK_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj),\
MAI_TYPE_ATK_SOCKET))
#define MAI_ATK_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\
MAI_TYPE_ATK_SOCKET,\
MaiAtkSocketClass))
#define MAI_IS_ATK_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),\
MAI_TYPE_ATK_SOCKET))
#define MAI_ATK_SOCKET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\
MAI_TYPE_ATK_SOCKET,\
MaiAtkSocketClass))
typedef struct _MaiAtkSocket MaiAtkSocket;
typedef struct _MaiAtkSocketClass MaiAtkSocketClass;
struct _MaiAtkSocket
{
AtkSocket parent;
nsAccessibleWrap* accWrap;
};
struct _MaiAtkSocketClass
{
AtkSocketClass parent_class;
};
G_BEGIN_DECLS
GType mai_atk_socket_get_type(void);
AtkObject* mai_atk_socket_new(nsAccessibleWrap* aAccWrap);
void mai_atk_component_iface_init(AtkComponentIface* aIface);
AtkObject* mai_atk_socket_ref_accessible_at_point(AtkComponent *aComponent,
gint aAccX,
gint aAccY,
AtkCoordType aCoordType);
void mai_atk_socket_get_extents(AtkComponent* aComponent,
gint* aAccX,
gint* aAccY,
gint* aAccWidth,
gint* aAccHeight,
AtkCoordType aCoordType);
G_END_DECLS
G_DEFINE_TYPE_EXTENDED(MaiAtkSocket, mai_atk_socket,
AtkSocketAccessible::g_atk_socket_type, 0,
G_IMPLEMENT_INTERFACE(ATK_TYPE_COMPONENT,
mai_atk_component_iface_init))
void
mai_atk_socket_class_init(MaiAtkSocketClass* aAcc)
{
}
void
mai_atk_socket_init(MaiAtkSocket* aAcc)
{
}
AtkObject*
mai_atk_socket_new(nsAccessibleWrap* aAccWrap)
{
NS_ENSURE_TRUE(aAccWrap, NULL);
MaiAtkSocket* acc = nsnull;
acc = static_cast<MaiAtkSocket*>(g_object_new(MAI_TYPE_ATK_SOCKET, NULL));
NS_ENSURE_TRUE(acc, NULL);
acc->accWrap = aAccWrap;
return ATK_OBJECT(acc);
}
void
mai_atk_component_iface_init(AtkComponentIface* aIface)
{
NS_ASSERTION(aIface, "Invalid Interface");
aIface->ref_accessible_at_point = mai_atk_socket_ref_accessible_at_point;
aIface->get_extents = mai_atk_socket_get_extents;
}
AtkObject*
mai_atk_socket_ref_accessible_at_point(AtkComponent* aComponent,
gint aX, gint aY,
AtkCoordType aCoordType)
{
NS_ENSURE_TRUE(MAI_IS_ATK_SOCKET(aComponent), nsnull);
return refAccessibleAtPointHelper(MAI_ATK_SOCKET(aComponent)->accWrap,
aX, aY, aCoordType);
}
void
mai_atk_socket_get_extents(AtkComponent* aComponent,
gint* aX, gint* aY, gint* aWidth, gint* aHeight,
AtkCoordType aCoordType)
{
*aX = *aY = *aWidth = *aHeight = 0;
if (!MAI_IS_ATK_SOCKET(aComponent))
return;
getExtentsHelper(MAI_ATK_SOCKET(aComponent)->accWrap,
aX, aY, aWidth, aHeight, aCoordType);
}
AtkSocketAccessible::AtkSocketAccessible(nsIContent* aContent,
nsIWeakReference* aShell,
const nsCString& aPlugId) :
nsAccessibleWrap(aContent, aShell)
{
mAtkObject = mai_atk_socket_new(this);
if (!mAtkObject)
return;
// Embeds the children of an AtkPlug, specified by plugId, as the children of
// this socket.
// Using G_TYPE macros instead of ATK_SOCKET macros to avoid undefined
// symbols.
if (gCanEmbed && G_TYPE_CHECK_INSTANCE_TYPE(mAtkObject, g_atk_socket_type) &&
!aPlugId.IsVoid()) {
AtkSocket* accSocket =
G_TYPE_CHECK_INSTANCE_CAST(mAtkObject, g_atk_socket_type, AtkSocket);
g_atk_socket_embed(accSocket, (gchar*)aPlugId.get());
}
}
NS_IMETHODIMP
AtkSocketAccessible::GetNativeInterface(void** aOutAccessible)
{
*aOutAccessible = mAtkObject;
return NS_OK;
}
void
AtkSocketAccessible::Shutdown()
{
if (mAtkObject) {
if (MAI_IS_ATK_SOCKET(mAtkObject))
MAI_ATK_SOCKET(mAtkObject)->accWrap = nsnull;
g_object_unref(mAtkObject);
mAtkObject = nsnull;
}
nsAccessibleWrap::Shutdown();
}

View File

@ -1,3 +1,6 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2:
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *
@ -14,11 +17,12 @@
* The Original Code is mozilla.org code. * The Original Code is mozilla.org code.
* *
* The Initial Developer of the Original Code is * The Initial Developer of the Original Code is
* Doug Turner <dougt@dougt.org> * Novell, Inc.
* Portions created by the Initial Developer are Copyright (C) 2009 * Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved. * the Initial Developer. All Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Brad Taylor <brad@getcoded.net> (original author)
* *
* Alternatively, the contents of this file may be used under the terms of * Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or * either the GNU General Public License Version 2 or later (the "GPL"), or
@ -34,26 +38,49 @@
* *
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
#include "nsIDOMEvent.idl" #ifndef _AtkSocketAccessible_H_
#define _AtkSocketAccessible_H_
[scriptable, uuid(1618546a-c176-40a2-9086-2d973acceeb1)] #include "nsAccessibleWrap.h"
interface nsIDOMOrientationEvent : nsIDOMEvent
// This file gets included by nsAccessibilityService.cpp, which can't include
// atk.h (or glib.h), so we can't rely on it being included.
#ifdef __ATK_H__
typedef void (*AtkSocketEmbedType) (AtkSocket*, gchar*);
#else
typedef void (*AtkSocketEmbedType) (void*, void*);
#endif
/**
* Provides a nsAccessibleWrap wrapper around AtkSocket for out-of-process
* accessibles.
*/
class AtkSocketAccessible: public nsAccessibleWrap
{ {
void initOrientationEvent(in DOMString eventTypeArg, public:
in boolean canBubbleArg,
in boolean cancelableArg,
in double x,
in double y,
in double z);
/*
* Axis values are between -1 to 1 where 0 is the balance point.
*
* For example, x = 0 would mean that the device, along the x axis, is parallel to the earth
* x decreasing would mean that the device is undergoing a counterclock-wise rotation on the x axis
* x increasing would mean that the device is undergoing a clock-wise rotation on the x axis.
*/
readonly attribute double x; // Soft references to AtkSocket
readonly attribute double y; static AtkSocketEmbedType g_atk_socket_embed;
readonly attribute double z; #ifdef __ATK_H__
static GType g_atk_socket_type;
#endif
static const char* sATKSocketEmbedSymbol;
static const char* sATKSocketGetTypeSymbol;
/*
* True if the current Atk version supports AtkSocket and it was correctly
* loaded.
*/
static bool gCanEmbed;
AtkSocketAccessible(nsIContent* aContent, nsIWeakReference* aShell,
const nsCString& aPlugId);
// nsAccessNode
virtual void Shutdown();
// nsIAccessible
NS_IMETHODIMP GetNativeInterface(void** aOutAccessible);
}; };
#endif

View File

@ -48,6 +48,7 @@ LIBXUL_LIBRARY = 1
CPPSRCS = \ CPPSRCS = \
AtkSocketAccessible.cpp \
nsAccessNodeWrap.cpp \ nsAccessNodeWrap.cpp \
nsAccessibleWrap.cpp \ nsAccessibleWrap.cpp \
nsDocAccessibleWrap.cpp \ nsDocAccessibleWrap.cpp \
@ -68,6 +69,7 @@ CPPSRCS = \
$(NULL) $(NULL)
EXPORTS = \ EXPORTS = \
AtkSocketAccessible.h \
nsAccessNodeWrap.h \ nsAccessNodeWrap.h \
nsARIAGridAccessibleWrap.h \ nsARIAGridAccessibleWrap.h \
nsAccessibleWrap.h \ nsAccessibleWrap.h \

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *
@ -49,6 +48,7 @@
#include "nsIServiceManager.h" #include "nsIServiceManager.h"
#include "nsAutoPtr.h" #include "nsAutoPtr.h"
#include "nsAccessibilityService.h" #include "nsAccessibilityService.h"
#include "AtkSocketAccessible.h"
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <atk/atk.h> #include <atk/atk.h>
@ -722,8 +722,23 @@ nsApplicationAccessibleWrap::PreCreate()
sATKLib = PR_LoadLibrary(sATKLibName); sATKLib = PR_LoadLibrary(sATKLibName);
if (sATKLib) { if (sATKLib) {
AtkGetTypeType pfn_atk_hyperlink_impl_get_type = (AtkGetTypeType) PR_FindFunctionSymbol(sATKLib, sATKHyperlinkImplGetTypeSymbol); AtkGetTypeType pfn_atk_hyperlink_impl_get_type = (AtkGetTypeType) PR_FindFunctionSymbol(sATKLib, sATKHyperlinkImplGetTypeSymbol);
if (pfn_atk_hyperlink_impl_get_type) { if (pfn_atk_hyperlink_impl_get_type)
g_atk_hyperlink_impl_type = pfn_atk_hyperlink_impl_get_type(); g_atk_hyperlink_impl_type = pfn_atk_hyperlink_impl_get_type();
AtkGetTypeType pfn_atk_socket_get_type;
pfn_atk_socket_get_type = (AtkGetTypeType)
PR_FindFunctionSymbol(sATKLib,
AtkSocketAccessible::sATKSocketGetTypeSymbol);
if (pfn_atk_socket_get_type) {
AtkSocketAccessible::g_atk_socket_type =
pfn_atk_socket_get_type();
AtkSocketAccessible::g_atk_socket_embed = (AtkSocketEmbedType)
PR_FindFunctionSymbol(sATKLib,
AtkSocketAccessible
::sATKSocketEmbedSymbol);
AtkSocketAccessible::gCanEmbed =
AtkSocketAccessible::g_atk_socket_type != G_TYPE_INVALID &&
AtkSocketAccessible::g_atk_socket_embed;
} }
} }
sATKChecked = PR_TRUE; sATKChecked = PR_TRUE;

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,5 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2:
*/ */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
@ -45,8 +45,6 @@
#include "nsCoreUtils.h" #include "nsCoreUtils.h"
#include "nsIDOMDocument.h" #include "nsIDOMDocument.h"
#include "nsIDOMDocumentView.h"
#include "nsIDOMAbstractView.h"
#include "nsIDOMWindowInternal.h" #include "nsIDOMWindowInternal.h"
#include "nsIDocShellTreeItem.h" #include "nsIDocShellTreeItem.h"
#include "nsIInterfaceRequestorUtils.h" #include "nsIInterfaceRequestorUtils.h"
@ -67,76 +65,84 @@ componentInterfaceInitCB(AtkComponentIface *aIface)
aIface->grab_focus = grabFocusCB; aIface->grab_focus = grabFocusCB;
} }
AtkObject * AtkObject*
refAccessibleAtPointCB(AtkComponent *aComponent, refAccessibleAtPointCB(AtkComponent* aComponent, gint aAccX, gint aAccY,
gint aAccX, gint aAccY,
AtkCoordType aCoordType) AtkCoordType aCoordType)
{ {
nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aComponent)); return refAccessibleAtPointHelper(GetAccessibleWrap(ATK_OBJECT(aComponent)),
if (!accWrap || nsAccUtils::MustPrune(accWrap)) aAccX, aAccY, aCoordType);
return nsnull;
// nsIAccessible getChildAtPoint (x,y) is in screen pixels.
if (aCoordType == ATK_XY_WINDOW) {
nsIntPoint winCoords =
nsCoreUtils::GetScreenCoordsForWindow(accWrap->GetNode());
aAccX += winCoords.x;
aAccY += winCoords.y;
}
nsCOMPtr<nsIAccessible> pointAcc;
accWrap->GetChildAtPoint(aAccX, aAccY, getter_AddRefs(pointAcc));
if (!pointAcc) {
return nsnull;
}
AtkObject *atkObj = nsAccessibleWrap::GetAtkObject(pointAcc);
if (atkObj) {
g_object_ref(atkObj);
}
return atkObj;
} }
void void
getExtentsCB(AtkComponent *aComponent, getExtentsCB(AtkComponent* aComponent, gint* aX, gint* aY,
gint *aAccX, gint* aWidth, gint* aHeight, AtkCoordType aCoordType)
gint *aAccY,
gint *aAccWidth,
gint *aAccHeight,
AtkCoordType aCoordType)
{ {
*aAccX = *aAccY = *aAccWidth = *aAccHeight = 0; getExtentsHelper(GetAccessibleWrap(ATK_OBJECT(aComponent)),
aX, aY, aWidth, aHeight, aCoordType);
nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aComponent));
if (!accWrap)
return;
PRInt32 nsAccX, nsAccY, nsAccWidth, nsAccHeight;
// Returned in screen coordinates
nsresult rv = accWrap->GetBounds(&nsAccX, &nsAccY,
&nsAccWidth, &nsAccHeight);
if (NS_FAILED(rv))
return;
if (aCoordType == ATK_XY_WINDOW) {
nsIntPoint winCoords =
nsCoreUtils::GetScreenCoordsForWindow(accWrap->GetNode());
nsAccX -= winCoords.x;
nsAccY -= winCoords.y;
}
*aAccX = nsAccX;
*aAccY = nsAccY;
*aAccWidth = nsAccWidth;
*aAccHeight = nsAccHeight;
} }
gboolean gboolean
grabFocusCB(AtkComponent *aComponent) grabFocusCB(AtkComponent* aComponent)
{ {
nsAccessibleWrap *accWrap = GetAccessibleWrap(ATK_OBJECT(aComponent)); nsAccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aComponent));
if (!accWrap) if (!accWrap)
return FALSE; return FALSE;
nsresult rv = accWrap->TakeFocus(); nsresult rv = accWrap->TakeFocus();
return (NS_FAILED(rv)) ? FALSE : TRUE; return (NS_FAILED(rv)) ? FALSE : TRUE;
}
AtkObject*
refAccessibleAtPointHelper(nsAccessibleWrap* aAccWrap, gint aX, gint aY,
AtkCoordType aCoordType)
{
if (!aAccWrap || aAccWrap->IsDefunct() || nsAccUtils::MustPrune(aAccWrap))
return nsnull;
// nsAccessible::GetChildAtPoint(x,y) is in screen pixels.
if (aCoordType == ATK_XY_WINDOW) {
nsIntPoint winCoords =
nsCoreUtils::GetScreenCoordsForWindow(aAccWrap->GetNode());
aX += winCoords.x;
aY += winCoords.y;
}
nsAccessible* accAtPoint = aAccWrap->GetChildAtPoint(aX, aY,
nsAccessible::eDirectChild);
if (!accAtPoint)
return nsnull;
AtkObject* atkObj = nsAccessibleWrap::GetAtkObject(accAtPoint);
if (atkObj)
g_object_ref(atkObj);
return atkObj;
}
void
getExtentsHelper(nsAccessibleWrap* aAccWrap,
gint* aX, gint* aY, gint* aWidth, gint* aHeight,
AtkCoordType aCoordType)
{
*aX = *aY = *aWidth = *aHeight = 0;
if (!aAccWrap || aAccWrap->IsDefunct())
return;
PRInt32 x = 0, y = 0, width = 0, height = 0;
// Returned in screen coordinates
nsresult rv = aAccWrap->GetBounds(&x, &y, &width, &height);
if (NS_FAILED(rv))
return;
if (aCoordType == ATK_XY_WINDOW) {
nsIntPoint winCoords =
nsCoreUtils::GetScreenCoordsForWindow(aAccWrap->GetNode());
x -= winCoords.x;
y -= winCoords.y;
}
*aX = x;
*aY = y;
*aWidth = width;
*aHeight = height;
} }

View File

@ -1,5 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2:
*/ */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
@ -46,22 +46,20 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/* component interface callbacks */ /* component interface callbacks */
void componentInterfaceInitCB(AtkComponentIface *aIface); void componentInterfaceInitCB(AtkComponentIface* aIface);
AtkObject *refAccessibleAtPointCB(AtkComponent *aComponent, AtkObject* refAccessibleAtPointCB(AtkComponent* aComponent,
gint aAccX, gint aAccY, gint aX, gint aY,
AtkCoordType aCoordType); AtkCoordType aCoordType);
void getExtentsCB(AtkComponent *aComponent, void getExtentsCB(AtkComponent* aComponent,
gint *aAccX, gint *aAccY, gint* aX, gint* aY, gint* aWidth, gint* aHeight,
gint *aAccWidth, gint *aAccHeight,
AtkCoordType aCoordType); AtkCoordType aCoordType);
/* the "contains", "get_position", "get_size" can take advantage of /* the "contains", "get_position", "get_size" can take advantage of
* "get_extents", there is no need to implement them now. * "get_extents", there is no need to implement them now.
*/ */
gboolean grabFocusCB(AtkComponent *aComponent); gboolean grabFocusCB(AtkComponent* aComponent);
/* what are missing now for atk component */ /* what are missing now for atk component:
*
/* ==================================================
* add_focus_handler * add_focus_handler
* remove_focus_handler * remove_focus_handler
* set_extents * set_extents
@ -69,8 +67,14 @@ gboolean grabFocusCB(AtkComponent *aComponent);
* set_size * set_size
* get_layer * get_layer
* get_mdi_zorder * get_mdi_zorder
* ==================================================
*/ */
AtkObject* refAccessibleAtPointHelper(nsAccessibleWrap* aAccWrap,
gint aX, gint aY, AtkCoordType aCoordType);
void getExtentsHelper(nsAccessibleWrap* aAccWrap,
gint* aX, gint* aY, gint* aWidth, gint* aHeight,
AtkCoordType aCoordType);
G_END_DECLS G_END_DECLS
#endif /* __MAI_INTERFACE_COMPONENT_H__ */ #endif /* __MAI_INTERFACE_COMPONENT_H__ */

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=4:tabstop=4: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: /* vim:expandtab:shiftwidth=2:tabstop=2: */
*/
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:expandtab:shiftwidth=2:tabstop=2: */
/* ***** BEGIN LICENSE BLOCK ***** /* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
* *

View File

@ -65,7 +65,7 @@
#include "nsIDOMHTMLOptionElement.h" #include "nsIDOMHTMLOptionElement.h"
#include "nsIDOMXULElement.h" #include "nsIDOMXULElement.h"
#include "nsIHTMLDocument.h" #include "nsIHTMLDocument.h"
#include "nsIImageFrame.h" #include "nsImageFrame.h"
#include "nsILink.h" #include "nsILink.h"
#include "nsIObserverService.h" #include "nsIObserverService.h"
#include "nsIPluginInstance.h" #include "nsIPluginInstance.h"
@ -95,6 +95,11 @@
#include "nsHTMLWin32ObjectAccessible.h" #include "nsHTMLWin32ObjectAccessible.h"
#endif #endif
// For embedding plugin accessibles
#ifdef MOZ_ACCESSIBILITY_ATK
#include "AtkSocketAccessible.h"
#endif
#ifndef DISABLE_XFORMS_HOOKS #ifndef DISABLE_XFORMS_HOOKS
#include "nsXFormsFormControlsAccessible.h" #include "nsXFormsFormControlsAccessible.h"
#include "nsXFormsWidgetsAccessible.h" #include "nsXFormsWidgetsAccessible.h"
@ -339,11 +344,12 @@ nsAccessibilityService::CreateHTMLObjectFrameAccessible(nsObjectFrame* aFrame,
return CreateOuterDocAccessible(aContent, aPresShell); return CreateOuterDocAccessible(aContent, aPresShell);
} }
#ifdef XP_WIN #if defined(XP_WIN) || defined(MOZ_ACCESSIBILITY_ATK)
// 2) for plugins // 2) for plugins
nsCOMPtr<nsIPluginInstance> pluginInstance ; nsCOMPtr<nsIPluginInstance> pluginInstance;
aFrame->GetPluginInstance(*getter_AddRefs(pluginInstance)); if (NS_SUCCEEDED(aFrame->GetPluginInstance(*getter_AddRefs(pluginInstance))) &&
if (pluginInstance) { pluginInstance) {
#ifdef XP_WIN
// Note: pluginPort will be null if windowless. // Note: pluginPort will be null if windowless.
HWND pluginPort = nsnull; HWND pluginPort = nsnull;
aFrame->GetPluginPort(&pluginPort); aFrame->GetPluginPort(&pluginPort);
@ -353,6 +359,22 @@ nsAccessibilityService::CreateHTMLObjectFrameAccessible(nsObjectFrame* aFrame,
pluginPort); pluginPort);
NS_IF_ADDREF(accessible); NS_IF_ADDREF(accessible);
return accessible; return accessible;
#elif MOZ_ACCESSIBILITY_ATK
if (!AtkSocketAccessible::gCanEmbed)
return nsnull;
nsCString plugId;
nsresult rv = pluginInstance->GetValueFromPlugin(
NPPVpluginNativeAccessibleAtkPlugId, &plugId);
if (NS_SUCCEEDED(rv) && !plugId.IsVoid()) {
AtkSocketAccessible* socketAccessible =
new AtkSocketAccessible(aContent, weakShell, plugId);
NS_IF_ADDREF(socketAccessible);
return socketAccessible;
}
#endif
} }
#endif #endif
@ -1244,7 +1266,7 @@ nsAccessibilityService::GetAreaAccessible(nsIFrame* aImageFrame,
nsAccessible** aImageAccessible) nsAccessible** aImageAccessible)
{ {
// Check if frame is an image frame, and content is <area>. // Check if frame is an image frame, and content is <area>.
nsIImageFrame *imageFrame = do_QueryFrame(aImageFrame); nsImageFrame *imageFrame = do_QueryFrame(aImageFrame);
if (!imageFrame) if (!imageFrame)
return nsnull; return nsnull;

View File

@ -43,15 +43,12 @@
#include "nsAccessNode.h" #include "nsAccessNode.h"
#include "nsIDocument.h" #include "nsIDocument.h"
#include "nsIDOMAbstractView.h"
#include "nsIDOM3Node.h" #include "nsIDOM3Node.h"
#include "nsIDOMDocument.h" #include "nsIDOMDocument.h"
#include "nsIDOMDocumentView.h"
#include "nsIDOMHTMLDocument.h" #include "nsIDOMHTMLDocument.h"
#include "nsIDOMHTMLElement.h" #include "nsIDOMHTMLElement.h"
#include "nsIDOMNodeList.h" #include "nsIDOMNodeList.h"
#include "nsIDOMRange.h" #include "nsIDOMRange.h"
#include "nsIDOMViewCSS.h"
#include "nsIDOMWindowInternal.h" #include "nsIDOMWindowInternal.h"
#include "nsIDOMXULElement.h" #include "nsIDOMXULElement.h"
#include "nsIDocShell.h" #include "nsIDocShell.h"
@ -425,13 +422,12 @@ nsCoreUtils::GetScreenCoordsForWindow(nsINode *aNode)
nsCOMPtr<nsIDocShellTreeItem> rootTreeItem; nsCOMPtr<nsIDocShellTreeItem> rootTreeItem;
treeItem->GetRootTreeItem(getter_AddRefs(rootTreeItem)); treeItem->GetRootTreeItem(getter_AddRefs(rootTreeItem));
nsCOMPtr<nsIDOMDocument> domDoc = do_GetInterface(rootTreeItem); nsCOMPtr<nsIDOMDocument> domDoc = do_GetInterface(rootTreeItem);
nsCOMPtr<nsIDOMDocumentView> docView(do_QueryInterface(domDoc)); if (!domDoc)
if (!docView)
return coords; return coords;
nsCOMPtr<nsIDOMAbstractView> abstractView; nsCOMPtr<nsIDOMWindow> window;
docView->GetDefaultView(getter_AddRefs(abstractView)); domDoc->GetDefaultView(getter_AddRefs(window));
nsCOMPtr<nsIDOMWindowInternal> windowInter(do_QueryInterface(abstractView)); nsCOMPtr<nsIDOMWindowInternal> windowInter(do_QueryInterface(window));
if (!windowInter) if (!windowInter)
return coords; return coords;
@ -597,14 +593,14 @@ nsCoreUtils::GetComputedStyleDeclaration(const nsAString& aPseudoElt,
if (!document) if (!document)
return nsnull; return nsnull;
nsCOMPtr<nsIDOMViewCSS> viewCSS(do_QueryInterface(document->GetWindow())); nsCOMPtr<nsIDOMWindow> window = do_QueryInterface(document->GetWindow());
if (!viewCSS) if (!window)
return nsnull; return nsnull;
nsIDOMCSSStyleDeclaration* cssDecl = nsnull; nsCOMPtr<nsIDOMCSSStyleDeclaration> cssDecl;
nsCOMPtr<nsIDOMElement> domElement(do_QueryInterface(content)); nsCOMPtr<nsIDOMElement> domElement(do_QueryInterface(content));
viewCSS->GetComputedStyle(domElement, aPseudoElt, &cssDecl); window->GetComputedStyle(domElement, aPseudoElt, getter_AddRefs(cssDecl));
return cssDecl; return cssDecl.forget();
} }
already_AddRefed<nsIBoxObject> already_AddRefed<nsIBoxObject>

View File

@ -193,15 +193,15 @@ nsRootAccessible::NativeState()
#ifdef MOZ_XUL #ifdef MOZ_XUL
PRUint32 chromeFlags = GetChromeFlags(); PRUint32 chromeFlags = GetChromeFlags();
if (chromeFlags & nsIWebBrowserChrome::CHROME_WINDOW_RESIZE) { if (chromeFlags & nsIWebBrowserChrome::CHROME_WINDOW_RESIZE)
states |= states::SIZEABLE; states |= states::SIZEABLE;
}
if (chromeFlags & nsIWebBrowserChrome::CHROME_TITLEBAR) {
// If it has a titlebar it's movable // If it has a titlebar it's movable
// XXX unless it's minimized or maximized, but not sure // XXX unless it's minimized or maximized, but not sure
// how to detect that // how to detect that
if (chromeFlags & nsIWebBrowserChrome::CHROME_TITLEBAR)
states |= states::MOVEABLE; states |= states::MOVEABLE;
} if (chromeFlags & nsIWebBrowserChrome::CHROME_MODAL)
states |= states::MODAL;
#endif #endif
nsCOMPtr<nsIFocusManager> fm = do_GetService(FOCUSMANAGER_CONTRACTID); nsCOMPtr<nsIFocusManager> fm = do_GetService(FOCUSMANAGER_CONTRACTID);
@ -215,12 +215,6 @@ nsRootAccessible::NativeState()
states |= states::ACTIVE; states |= states::ACTIVE;
} }
#ifdef MOZ_XUL
if (GetChromeFlags() & nsIWebBrowserChrome::CHROME_MODAL) {
states |= states::MODAL;
}
#endif
return states; return states;
} }

View File

@ -47,8 +47,8 @@
#include "nsIDOMElement.h" #include "nsIDOMElement.h"
#include "nsIDOMHTMLAreaElement.h" #include "nsIDOMHTMLAreaElement.h"
#include "nsIFrame.h" #include "nsIFrame.h"
#include "nsIImageFrame.h" #include "nsImageFrame.h"
#include "nsIImageMap.h" #include "nsImageMap.h"
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// nsHTMLImageMapAccessible // nsHTMLImageMapAccessible
@ -203,14 +203,12 @@ nsHTMLAreaAccessible::GetBounds(PRInt32 *aX, PRInt32 *aY,
nsIFrame *frame = GetFrame(); nsIFrame *frame = GetFrame();
NS_ENSURE_TRUE(frame, NS_ERROR_FAILURE); NS_ENSURE_TRUE(frame, NS_ERROR_FAILURE);
nsIImageFrame *imageFrame = do_QueryFrame(frame); nsImageFrame *imageFrame = do_QueryFrame(frame);
nsCOMPtr<nsIImageMap> map; nsImageMap* map = imageFrame->GetImageMap(presContext);
imageFrame->GetImageMap(presContext, getter_AddRefs(map));
NS_ENSURE_TRUE(map, NS_ERROR_FAILURE); NS_ENSURE_TRUE(map, NS_ERROR_FAILURE);
nsRect rect; nsRect rect;
nsIntRect orgRectPixels;
nsresult rv = map->GetBoundsForAreaContent(mContent, rect); nsresult rv = map->GetBoundsForAreaContent(mContent, rect);
NS_ENSURE_SUCCESS(rv, rv); NS_ENSURE_SUCCESS(rv, rv);
@ -223,7 +221,7 @@ nsHTMLAreaAccessible::GetBounds(PRInt32 *aX, PRInt32 *aY,
*aHeight = presContext->AppUnitsToDevPixels(rect.height - rect.y); *aHeight = presContext->AppUnitsToDevPixels(rect.height - rect.y);
// Put coords in absolute screen coords // Put coords in absolute screen coords
orgRectPixels = frame->GetScreenRectExternal(); nsIntRect orgRectPixels = frame->GetScreenRectExternal();
*aX += orgRectPixels.x; *aX += orgRectPixels.x;
*aY += orgRectPixels.y; *aY += orgRectPixels.y;

View File

@ -47,11 +47,9 @@
#include "nsIClipboard.h" #include "nsIClipboard.h"
#include "nsContentCID.h" #include "nsContentCID.h"
#include "nsIDOMAbstractView.h"
#include "nsIDOMCharacterData.h" #include "nsIDOMCharacterData.h"
#include "nsIDOMDocument.h" #include "nsIDOMDocument.h"
#include "nsPIDOMWindow.h" #include "nsPIDOMWindow.h"
#include "nsIDOMDocumentView.h"
#include "nsIDOMRange.h" #include "nsIDOMRange.h"
#include "nsIDOMNSRange.h" #include "nsIDOMNSRange.h"
#include "nsIDOMWindowInternal.h" #include "nsIDOMWindowInternal.h"

View File

@ -52,7 +52,6 @@
#include "nsIDocument.h" #include "nsIDocument.h"
#include "nsIDOMNodeList.h" #include "nsIDOMNodeList.h"
#include "nsIDOMNSHTMLElement.h" #include "nsIDOMNSHTMLElement.h"
#include "nsIDOMViewCSS.h"
#include "nsIFrame.h" #include "nsIFrame.h"
#include "nsINameSpaceManager.h" #include "nsINameSpaceManager.h"
#include "nsIPrefService.h" #include "nsIPrefService.h"

View File

@ -15,6 +15,12 @@
</targetApplication> </targetApplication>
</versionRange> </versionRange>
</emItem> </emItem>
<emItem id="krupa.raj+545@gmail.com">
<versionRange severity="2"/>
</emItem>
<emItem id="krups@krup12s.com">
<versionRange severity="3"/>
</emItem>
<emItem id="langpack-vi-VN@firefox.mozilla.org"> <emItem id="langpack-vi-VN@firefox.mozilla.org">
<versionRange minVersion="2.0" maxVersion="2.0"/> <versionRange minVersion="2.0" maxVersion="2.0"/>
</emItem> </emItem>
@ -36,6 +42,9 @@
<emItem id="msntoolbar@msn.com"> <emItem id="msntoolbar@msn.com">
<versionRange minVersion=" " maxVersion="6.*"/> <versionRange minVersion=" " maxVersion="6.*"/>
</emItem> </emItem>
<emItem id="near799@wdios.com" os="Android">
<versionRange minVersion="0.8" maxVersion="1.0" severity="3"/>
</emItem>
<emItem id="personas@christopher.beard"> <emItem id="personas@christopher.beard">
<versionRange minVersion="1.6" maxVersion="1.6"> <versionRange minVersion="1.6" maxVersion="1.6">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"> <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
@ -46,6 +55,9 @@
<emItem id="ShopperReports@ShopperReports.com"> <emItem id="ShopperReports@ShopperReports.com">
<versionRange minVersion="3.1.22.0" maxVersion="3.1.22.0"/> <versionRange minVersion="3.1.22.0" maxVersion="3.1.22.0"/>
</emItem> </emItem>
<emItem id="sidecar-test-addon20110103118@amazon.com" os="MACOSX, Windows, Linux">
<versionRange severity="3"/>
</emItem>
<emItem id="support@daemon-tools.cc"> <emItem id="support@daemon-tools.cc">
<versionRange minVersion=" " maxVersion="1.0.0.5"/> <versionRange minVersion=" " maxVersion="1.0.0.5"/>
</emItem> </emItem>
@ -184,5 +196,38 @@
<driverVersion>7.0.0.0</driverVersion> <driverVersion>7.0.0.0</driverVersion>
<driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator> <driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry> </gfxBlacklistEntry>
<gfxBlacklistEntry>
<os>MAC OS X 10.5.8</os>
<vendor>0x10de</vendor>
<feature>DIRECT3D_9_LAYERS</feature>
<driverVersion>7.0.0.0</driverVersion>
<driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
<gfxBlacklistEntry>
<os>MAC OS X 10.5.8</os>
<vendor>0x10de</vendor>
<feature>DIRECT3D_9_LAYERS</feature>
<featureStatus>BLOCKED_DRIVER_VERSION</featureStatus>
<driverVersion>7.0.0.0</driverVersion>
<driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
<gfxBlacklistEntry>
<os>MAC OS X 10.6</os>
<vendor>0x10de</vendor>
<devices>
<device>0x0a6c</device>
</devices>
<feature>DIRECT3D_9_LAYERS</feature>
<featureStatus>BLOCKED_DRIVER_VERSION</featureStatus>
<driverVersion>8.17.12.5896</driverVersion>
<driverVersionComparator>LESS_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
<gfxBlacklistEntry>
<os>MAC OS X 10.6</os>
<vendor>0x10de</vendor>
<feature>DIRECT3D_9_LAYERS</feature>
<driverVersion>7.0.0.0</driverVersion>
<driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
</gfxItems> </gfxItems>
</blocklist> </blocklist>

View File

@ -55,6 +55,7 @@ const POPUP_SHOW_ON_RESULTS = "extensions.testpilot.popup.showOnNewResults";
const POPUP_CHECK_INTERVAL = "extensions.testpilot.popup.delayAfterStartup"; const POPUP_CHECK_INTERVAL = "extensions.testpilot.popup.delayAfterStartup";
const POPUP_REMINDER_INTERVAL = "extensions.testpilot.popup.timeBetweenChecks"; const POPUP_REMINDER_INTERVAL = "extensions.testpilot.popup.timeBetweenChecks";
const ALWAYS_SUBMIT_DATA = "extensions.testpilot.alwaysSubmitData"; const ALWAYS_SUBMIT_DATA = "extensions.testpilot.alwaysSubmitData";
const UPDATE_CHANNEL_PREF = "app.update.channel";
const LOG_FILE_NAME = "TestPilotErrorLog.log"; const LOG_FILE_NAME = "TestPilotErrorLog.log";
const RANDOM_DEPLOY_PREFIX = "extensions.testpilot.deploymentRandomizer"; const RANDOM_DEPLOY_PREFIX = "extensions.testpilot.deploymentRandomizer";

View File

@ -76,10 +76,9 @@ pref("extensions.update.autoUpdateDefault", true);
// Dictionary download preference // Dictionary download preference
pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/%APP%/dictionaries/"); pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/%APP%/dictionaries/");
// Update Timer Manager preferences // The minimum delay in seconds for the timer to fire.
// Interval: When all registered timers should be checked (in milliseconds) // default=2 minutes
// default=10 minutes pref("app.update.timerMinimumDelay", 120);
pref("app.update.timer", 600000);
// App-specific update preferences // App-specific update preferences
@ -347,10 +346,6 @@ pref("browser.search.update.log", false);
// Check whether we need to perform engine updates every 6 hours // Check whether we need to perform engine updates every 6 hours
pref("browser.search.update.interval", 21600); pref("browser.search.update.interval", 21600);
// Whether or not microsummary and generator updates are enabled
pref("browser.microsummary.enabled", true);
pref("browser.microsummary.updateGenerators", true);
// enable search suggestions by default // enable search suggestions by default
pref("browser.search.suggest.enabled", true); pref("browser.search.suggest.enabled", true);

View File

@ -597,6 +597,8 @@ var gChannelSelector = {
selectChannel: function(aSelectedItem) { selectChannel: function(aSelectedItem) {
document.getElementById("channelDescriptionDeck").selectedPanel = document.getElementById("channelDescriptionDeck").selectedPanel =
document.getElementById(aSelectedItem.value + "Description"); document.getElementById(aSelectedItem.value + "Description");
document.getElementById("channelMenulist").setAttribute("aria-describedby",
aSelectedItem.value + "Description");
}, },
cancel: function() { cancel: function() {

View File

@ -67,6 +67,7 @@
#else #else
title="&aboutDialog.title;" title="&aboutDialog.title;"
#endif #endif
aria-describedby="version distribution distributionId"
> >
<script type="application/javascript" src="chrome://browser/content/aboutDialog.js"/> <script type="application/javascript" src="chrome://browser/content/aboutDialog.js"/>
@ -82,7 +83,7 @@
<!-- Make sure the selectedIndex attribute is always set so that the CSS <!-- Make sure the selectedIndex attribute is always set so that the CSS
selectors for transitions work --> selectors for transitions work -->
<deck id="contentDeck" selectedIndex="0"> <deck id="contentDeck" selectedIndex="0">
<vbox id="detailsBox"> <vbox id="detailsBox" aria-describedby="communityDesc contributeDesc">
<vbox id="updateBox"> <vbox id="updateBox">
#ifdef MOZ_UPDATER #ifdef MOZ_UPDATER
<deck id="updateDeck" orient="vertical"> <deck id="updateDeck" orient="vertical">
@ -119,10 +120,10 @@
<description class="text-blurb" id="currentChannelText" hidden="true"> <description class="text-blurb" id="currentChannelText" hidden="true">
&channel.description.start;<label id="currentChannel"/>&channel.description.end;<label id="channelChangeLink" class="text-link" onclick="gChannelSelector.show();">&channel.change;</label> &channel.description.start;<label id="currentChannel"/>&channel.description.end;<label id="channelChangeLink" class="text-link" onclick="gChannelSelector.show();">&channel.change;</label>
</description> </description>
<description class="text-blurb"> <description class="text-blurb" id="communityDesc">
&community.start2;<label class="text-link" href="http://www.mozilla.org/">&community.mozillaLink;</label>&community.middle2;<label class="text-link" href="about:credits">&community.creditsLink;</label>&community.end2; &community.start2;<label class="text-link" href="http://www.mozilla.org/">&community.mozillaLink;</label>&community.middle2;<label class="text-link" href="about:credits">&community.creditsLink;</label>&community.end2;
</description> </description>
<description class="text-blurb"> <description class="text-blurb" id="contributeDesc">
&contribute.start;<label class="text-link" href="http://www.mozilla.org/contribute/">&contribute.getInvolvedLink;</label>&contribute.end; &contribute.start;<label class="text-link" href="http://www.mozilla.org/contribute/">&contribute.getInvolvedLink;</label>&contribute.end;
</description> </description>
</vbox> </vbox>
@ -130,7 +131,7 @@
<vbox id="channelSelector"> <vbox id="channelSelector">
<hbox pack="start" align="center"> <hbox pack="start" align="center">
<label id="channelSelectorStart">&channel.selector.start;</label> <label id="channelSelectorStart">&channel.selector.start;</label>
<menulist id="channelMenulist" onselect="gChannelSelector.selectChannel(this.selectedItem);"> <menulist id="channelMenulist" onselect="gChannelSelector.selectChannel(this.selectedItem);" aria-labelledby="channelSelectorStart channelMenulist channelSelectorEnd">
<menupopup> <menupopup>
<menuitem id="releaseMenuitem" label="Release" value="release"/> <menuitem id="releaseMenuitem" label="Release" value="release"/>
<menuitem id="betaMenuitem" label="Beta" value="beta"/> <menuitem id="betaMenuitem" label="Beta" value="beta"/>
@ -138,7 +139,7 @@
<menuitem id="auroraMenuitem" label="Aurora" value="aurora"/> <menuitem id="auroraMenuitem" label="Aurora" value="aurora"/>
</menupopup> </menupopup>
</menulist> </menulist>
<label>&channel.selector.end;</label> <label id="channelSelectorEnd">&channel.selector.end;</label>
</hbox> </hbox>
<deck id="channelDescriptionDeck" selectedIndex="0"> <deck id="channelDescriptionDeck" selectedIndex="0">

View File

@ -22,6 +22,7 @@
# Contributor(s): # Contributor(s):
# Ehsan Akhgari <ehsan.akhgari@gmail.com> # Ehsan Akhgari <ehsan.akhgari@gmail.com>
# Rob Campbell <rcampbell@mozilla.com> # Rob Campbell <rcampbell@mozilla.com>
# Steffen Wilberg <steffen.wilberg@web.de>
# #
# Alternatively, the contents of this file may be used under the terms of # Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or # either the GNU General Public License Version 2 or later (the "GPL"), or
@ -379,16 +380,15 @@
oncommand="BrowserGoHome(event);" oncommand="BrowserGoHome(event);"
onclick="checkForMiddleClick(this, event);" onclick="checkForMiddleClick(this, event);"
key="goHome"/> key="goHome"/>
<menuseparator id="historyMenuHomeSeparator"
class="show-only-for-keyboard"/>
<menuitem id="menu_showAllHistory" <menuitem id="menu_showAllHistory"
label="&showAllHistoryCmd2.label;" label="&showAllHistoryCmd2.label;"
#ifndef XP_MACOSX #ifndef XP_MACOSX
key="showAllHistoryKb" key="showAllHistoryKb"
#endif #endif
command="Browser:ShowAllHistory"/> command="Browser:ShowAllHistory"/>
<menuseparator id="startHistorySeparator"/> <menuseparator id="showAllHistorySeparator"/>
<menuseparator id="endHistorySeparator"
class="hide-if-empty-places-result"
builder="end"/>
#ifdef MOZ_SERVICES_SYNC #ifdef MOZ_SERVICES_SYNC
<menuitem id="sync-tabs-menuitem" <menuitem id="sync-tabs-menuitem"
label="&syncTabsMenu.label;" label="&syncTabsMenu.label;"
@ -420,6 +420,8 @@
#endif #endif
onpopupshowing="document.getElementById('history-menu')._placesView.populateUndoWindowSubmenu();"/> onpopupshowing="document.getElementById('history-menu')._placesView.populateUndoWindowSubmenu();"/>
</menu> </menu>
<menuseparator id="startHistorySeparator"
class="hide-if-empty-places-result"/>
</menupopup> </menupopup>
</menu> </menu>
@ -441,6 +443,11 @@
if (!this.parentNode._placesView) if (!this.parentNode._placesView)
new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');" new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');"
tooltip="bhTooltip" popupsinherittooltip="true"> tooltip="bhTooltip" popupsinherittooltip="true">
<menuitem id="bookmarksShowAll"
label="&showAllBookmarks2.label;"
command="Browser:ShowAllBookmarks"
key="manBookmarkKb"/>
<menuseparator id="organizeBookmarksSeparator"/>
<menuitem id="menu_bookmarkThisPage" <menuitem id="menu_bookmarkThisPage"
label="&bookmarkThisPageCmd.label;" label="&bookmarkThisPageCmd.label;"
command="Browser:AddBookmarkAs" command="Browser:AddBookmarkAs"
@ -469,11 +476,7 @@
class="show-only-for-keyboard" class="show-only-for-keyboard"
command="Browser:BookmarkAllTabs" command="Browser:BookmarkAllTabs"
key="bookmarkAllTabsKb"/> key="bookmarkAllTabsKb"/>
<menuitem id="bookmarksShowAll" <menuseparator id="bookmarksToolbarSeparator"/>
label="&showAllBookmarks2.label;"
command="Browser:ShowAllBookmarks"
key="manBookmarkKb"/>
<menuseparator id="organizeBookmarksSeparator"/>
<menu id="bookmarksToolbarFolderMenu" <menu id="bookmarksToolbarFolderMenu"
class="menu-iconic bookmark-item" class="menu-iconic bookmark-item"
label="&personalbarCmd.label;" label="&personalbarCmd.label;"
@ -486,7 +489,13 @@
onpopupshowing="if (!this.parentNode._placesView) onpopupshowing="if (!this.parentNode._placesView)
new PlacesMenu(event, 'place:folder=TOOLBAR');"/> new PlacesMenu(event, 'place:folder=TOOLBAR');"/>
</menu> </menu>
<menuseparator/> <menuseparator id="bookmarksMenuItemsSeparator"/>
<!-- Bookmarks menu items -->
<menuseparator builder="end"
class="hide-if-empty-places-result"/>
<menuitem id="menu_unsortedBookmarks"
label="&unsortedBookmarksCmd.label;"
oncommand="PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');"/>
</menupopup> </menupopup>
</menu> </menu>

View File

@ -489,7 +489,7 @@ function HistoryMenu(aPopupShowingEvent) {
"@mozilla.org/browser/sessionstore;1", "@mozilla.org/browser/sessionstore;1",
"nsISessionStore"); "nsISessionStore");
PlacesMenu.call(this, aPopupShowingEvent, PlacesMenu.call(this, aPopupShowingEvent,
"place:redirectsMode=2&sort=4&maxResults=10"); "place:redirectsMode=2&sort=4&maxResults=15");
} }
HistoryMenu.prototype = { HistoryMenu.prototype = {

View File

@ -84,6 +84,8 @@ var gLastValidURLStr = "";
var gInPrintPreviewMode = false; var gInPrintPreviewMode = false;
var gDownloadMgr = null; var gDownloadMgr = null;
var gContextMenu = null; // nsContextMenu instance var gContextMenu = null; // nsContextMenu instance
var gDelayedStartupTimeoutId;
var gStartupRan = false;
#ifndef XP_MACOSX #ifndef XP_MACOSX
var gEditUIVisible = true; var gEditUIVisible = true;
@ -1332,7 +1334,8 @@ function BrowserStartup() {
retrieveToolbarIconsizesFromTheme(); retrieveToolbarIconsizesFromTheme();
setTimeout(delayedStartup, 0, isLoadingBlank, mustLoadSidebar); gDelayedStartupTimeoutId = setTimeout(delayedStartup, 0, isLoadingBlank, mustLoadSidebar);
gStartupRan = true;
} }
function HandleAppCommandEvent(evt) { function HandleAppCommandEvent(evt) {
@ -1452,6 +1455,8 @@ function prepareForStartup() {
} }
function delayedStartup(isLoadingBlank, mustLoadSidebar) { function delayedStartup(isLoadingBlank, mustLoadSidebar) {
gDelayedStartupTimeoutId = null;
Services.obs.addObserver(gSessionHistoryObserver, "browser:purge-session-history", false); Services.obs.addObserver(gSessionHistoryObserver, "browser:purge-session-history", false);
Services.obs.addObserver(gXPInstallObserver, "addon-install-disabled", false); Services.obs.addObserver(gXPInstallObserver, "addon-install-disabled", false);
Services.obs.addObserver(gXPInstallObserver, "addon-install-started", false); Services.obs.addObserver(gXPInstallObserver, "addon-install-started", false);
@ -1577,22 +1582,10 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
gPrefService.addObserver(ctrlTab.prefName, ctrlTab, false); gPrefService.addObserver(ctrlTab.prefName, ctrlTab, false);
gPrefService.addObserver(allTabs.prefName, allTabs, false); gPrefService.addObserver(allTabs.prefName, allTabs, false);
// Initialize the microsummary service by retrieving it, prompting its factory
// to create its singleton, whose constructor initializes the service.
// Started 4 seconds after delayedStartup (before the livemarks service below).
setTimeout(function() {
try {
Cc["@mozilla.org/microsummary/service;1"].getService(Ci.nsIMicrosummaryService);
} catch (ex) {
Components.utils.reportError("Failed to init microsummary service:\n" + ex);
}
}, 4000);
// Delayed initialization of the livemarks update timer. // Delayed initialization of the livemarks update timer.
// Livemark updates don't need to start until after bookmark UI // Livemark updates don't need to start until after bookmark UI
// such as the toolbar has initialized. Starting 5 seconds after // such as the toolbar has initialized. Starting 5 seconds after
// delayedStartup in order to stagger this after the microsummary // delayedStartup in order to stagger this before the download manager starts.
// service (see above) and before the download manager starts (see below).
setTimeout(function() PlacesUtils.livemarks.start(), 5000); setTimeout(function() PlacesUtils.livemarks.start(), 5000);
// Initialize the download manager some time after the app starts so that // Initialize the download manager some time after the app starts so that
@ -1672,16 +1665,16 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
Services.obs.notifyObservers(window, "browser-delayed-startup-finished", ""); Services.obs.notifyObservers(window, "browser-delayed-startup-finished", "");
} }
function BrowserShutdown() function BrowserShutdown() {
{ // In certain scenarios it's possible for unload to be fired before onload,
if (Win7Features) // (e.g. if the window is being closed after browser.js loads but before the
Win7Features.onCloseWindow(); // load completes). In that case, there's nothing to do here.
if (!gStartupRan)
return;
gPrefService.removeObserver(ctrlTab.prefName, ctrlTab); // First clean up services initialized in BrowserStartup (or those whose
gPrefService.removeObserver(allTabs.prefName, allTabs); // uninit methods don't depend on the services having been initialized).
ctrlTab.uninit();
allTabs.uninit(); allTabs.uninit();
TabView.uninit();
CombinedStopReload.uninit(); CombinedStopReload.uninit();
@ -1689,21 +1682,7 @@ function BrowserShutdown()
FullScreen.cleanup(); FullScreen.cleanup();
try {
FullZoom.destroy();
}
catch(ex) {
Components.utils.reportError(ex);
}
Services.obs.removeObserver(gSessionHistoryObserver, "browser:purge-session-history");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-disabled");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-started");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-blocked");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-failed");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-complete");
Services.obs.removeObserver(gPluginHandler.pluginCrashed, "plugin-crashed"); Services.obs.removeObserver(gPluginHandler.pluginCrashed, "plugin-crashed");
Services.obs.removeObserver(gFormSubmitObserver, "invalidformsubmit");
try { try {
gBrowser.removeProgressListener(window.XULBrowserWindow); gBrowser.removeProgressListener(window.XULBrowserWindow);
@ -1713,17 +1692,8 @@ function BrowserShutdown()
PlacesStarButton.uninit(); PlacesStarButton.uninit();
try {
gPrefService.removeObserver(gHomeButton.prefDomain, gHomeButton);
} catch (ex) {
Components.utils.reportError(ex);
}
BrowserOffline.uninit();
OfflineApps.uninit();
gPrivateBrowsingUI.uninit(); gPrivateBrowsingUI.uninit();
IndexedDBPromptHelper.uninit();
AddonManager.removeAddonListener(AddonsMgrListener);
TabsInTitlebar.uninit(); TabsInTitlebar.uninit();
var enumerator = Services.wm.getEnumerator(null); var enumerator = Services.wm.getEnumerator(null);
@ -1735,6 +1705,47 @@ function BrowserShutdown()
document.persist("sidebar-title", "value"); document.persist("sidebar-title", "value");
} }
// Now either cancel delayedStartup, or clean up the services initialized from
// it.
if (gDelayedStartupTimeoutId) {
clearTimeout(gDelayedStartupTimeoutId);
} else {
if (Win7Features)
Win7Features.onCloseWindow();
gPrefService.removeObserver(ctrlTab.prefName, ctrlTab);
gPrefService.removeObserver(allTabs.prefName, allTabs);
ctrlTab.uninit();
TabView.uninit();
try {
FullZoom.destroy();
}
catch(ex) {
Components.utils.reportError(ex);
}
Services.obs.removeObserver(gSessionHistoryObserver, "browser:purge-session-history");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-disabled");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-started");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-blocked");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-failed");
Services.obs.removeObserver(gXPInstallObserver, "addon-install-complete");
Services.obs.removeObserver(gFormSubmitObserver, "invalidformsubmit");
try {
gPrefService.removeObserver(gHomeButton.prefDomain, gHomeButton);
} catch (ex) {
Components.utils.reportError(ex);
}
BrowserOffline.uninit();
OfflineApps.uninit();
IndexedDBPromptHelper.uninit();
AddonManager.removeAddonListener(AddonsMgrListener);
}
// Final window teardown, do this last.
window.XULBrowserWindow.destroy(); window.XULBrowserWindow.destroy();
window.XULBrowserWindow = null; window.XULBrowserWindow = null;
window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
@ -1750,8 +1761,7 @@ function BrowserShutdown()
// nonBrowserWindowStartup(), nonBrowserWindowDelayedStartup(), and // nonBrowserWindowStartup(), nonBrowserWindowDelayedStartup(), and
// nonBrowserWindowShutdown() are used for non-browser windows in // nonBrowserWindowShutdown() are used for non-browser windows in
// macBrowserOverlay // macBrowserOverlay
function nonBrowserWindowStartup() function nonBrowserWindowStartup() {
{
// Disable inappropriate commands / submenus // Disable inappropriate commands / submenus
var disabledItems = ['Browser:SavePage', var disabledItems = ['Browser:SavePage',
'Browser:SendLink', 'cmd_pageSetup', 'cmd_print', 'cmd_find', 'cmd_findAgain', 'Browser:SendLink', 'cmd_pageSetup', 'cmd_print', 'cmd_find', 'cmd_findAgain',
@ -1761,8 +1771,7 @@ function nonBrowserWindowStartup()
'View:PageInfo', 'Tasks:InspectPage', 'Browser:ToggleTabView', ]; 'View:PageInfo', 'Tasks:InspectPage', 'Browser:ToggleTabView', ];
var element; var element;
for (var id in disabledItems) for (var id in disabledItems) {
{
element = document.getElementById(disabledItems[id]); element = document.getElementById(disabledItems[id]);
if (element) if (element)
element.setAttribute("disabled", "true"); element.setAttribute("disabled", "true");
@ -1770,11 +1779,9 @@ function nonBrowserWindowStartup()
// If no windows are active (i.e. we're the hidden window), disable the close, minimize // If no windows are active (i.e. we're the hidden window), disable the close, minimize
// and zoom menu commands as well // and zoom menu commands as well
if (window.location.href == "chrome://browser/content/hiddenWindow.xul") if (window.location.href == "chrome://browser/content/hiddenWindow.xul") {
{
var hiddenWindowDisabledItems = ['cmd_close', 'minimizeWindow', 'zoomWindow']; var hiddenWindowDisabledItems = ['cmd_close', 'minimizeWindow', 'zoomWindow'];
for (var id in hiddenWindowDisabledItems) for (var id in hiddenWindowDisabledItems) {
{
element = document.getElementById(hiddenWindowDisabledItems[id]); element = document.getElementById(hiddenWindowDisabledItems[id]);
if (element) if (element)
element.setAttribute("disabled", "true"); element.setAttribute("disabled", "true");
@ -1802,12 +1809,12 @@ function nonBrowserWindowStartup()
} }
} }
gDelayedStartupTimeoutId = setTimeout(nonBrowserWindowDelayedStartup, 0);
setTimeout(nonBrowserWindowDelayedStartup, 0);
} }
function nonBrowserWindowDelayedStartup() function nonBrowserWindowDelayedStartup() {
{ gDelayedStartupTimeoutId = null;
// initialise the offline listener // initialise the offline listener
BrowserOffline.init(); BrowserOffline.init();
@ -1821,10 +1828,18 @@ function nonBrowserWindowDelayedStartup()
// initialize the sync UI // initialize the sync UI
gSyncUI.init(); gSyncUI.init();
#endif #endif
gStartupRan = true;
} }
function nonBrowserWindowShutdown() function nonBrowserWindowShutdown() {
{ // If nonBrowserWindowDelayedStartup hasn't run yet, we have no work to do -
// just cancel the pending timeout and return;
if (gDelayedStartupTimeoutId) {
clearTimeout(gDelayedStartupTimeoutId);
return;
}
BrowserOffline.uninit(); BrowserOffline.uninit();
gPrivateBrowsingUI.uninit(); gPrivateBrowsingUI.uninit();
@ -2258,9 +2273,15 @@ function getShortcutOrURI(aURL, aPostDataRef) {
} catch (e) {} } catch (e) {}
} }
// encodeURIComponent produces UTF-8, and cannot be used for other charsets.
// escape() works in those cases, but it doesn't uri-encode +, @, and /.
// Therefore we need to manually replace these ASCII characters by their
// encodeURIComponent result, to match the behavior of nsEscape() with
// url_XPAlphas
var encodedParam = ""; var encodedParam = "";
if (charset) if (charset && charset != "UTF-8")
encodedParam = escape(convertFromUnicode(charset, param)); encodedParam = escape(convertFromUnicode(charset, param)).
replace(/[+@\/]+/g, encodeURIComponent);
else // Default charset is UTF-8 else // Default charset is UTF-8
encodedParam = encodeURIComponent(param); encodedParam = encodeURIComponent(param);

View File

@ -1,50 +0,0 @@
<?xml version="1.0"?>
# ***** 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 Asaf Romano
# Portions created by the Initial Developer are Copyright (C) 2005
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Asaf Romano <mozilla.mano@sent.com>
#
# Alternatively, the contents of this file may be used under the terms of
# either 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 *****
<?xul-overlay href="chrome://browser/content/macBrowserOverlay.xul"?>
<overlay id="extensionsManagerOverlay"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<window id="extensionsManager">
#include browserMountPoints.inc
</window>
</overlay>

View File

@ -44,6 +44,8 @@
%syncBrandDTD; %syncBrandDTD;
<!ENTITY % syncKeyDTD SYSTEM "chrome://browser/locale/syncKey.dtd"> <!ENTITY % syncKeyDTD SYSTEM "chrome://browser/locale/syncKey.dtd">
%syncKeyDTD; %syncKeyDTD;
<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd" >
%globalDTD;
]> ]>
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
@ -57,10 +59,10 @@
</style> </style>
</head> </head>
<body> <body dir="&locale.dir;">
<h1>&syncKey.page.title;</h1> <h1>&syncKey.page.title;</h1>
<p id="synckey">SYNCKEY</p> <p id="synckey" dir="ltr">SYNCKEY</p>
<p>&syncKey.page.description;</p> <p>&syncKey.page.description;</p>

View File

@ -78,7 +78,6 @@ function GroupItem(listOfEls, options) {
this.id = options.id || GroupItems.getNextID(); this.id = options.id || GroupItems.getNextID();
this._isStacked = false; this._isStacked = false;
this.expanded = null; this.expanded = null;
this.topChild = null;
this.hidden = false; this.hidden = false;
this.fadeAwayUndoButtonDelay = 15000; this.fadeAwayUndoButtonDelay = 15000;
this.fadeAwayUndoButtonDuration = 300; this.fadeAwayUndoButtonDuration = 300;
@ -303,6 +302,7 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
"tab must be null (if no children) or a TabItem"); "tab must be null (if no children) or a TabItem");
this._activeTab = tab; this._activeTab = tab;
this.arrange({immediately: true});
}, },
// ----------- // -----------
@ -350,8 +350,7 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
// determined by whether the tab is this group's topChild, or // determined by whether the tab is this group's topChild, or
// if it doesn't have one, its first child. // if it doesn't have one, its first child.
isTopOfStack: function GroupItem_isTopOfStack(item) { isTopOfStack: function GroupItem_isTopOfStack(item) {
return this.isStacked() && ((this.topChild == item) || return this.isStacked() && item == this.getTopChild();
(!this.topChild && this.getChild(0) == item));
}, },
// ---------- // ----------
@ -618,7 +617,7 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
var zIndex = topZIndex; var zIndex = topZIndex;
var self = this; var self = this;
this._children.forEach(function(child) { this._children.forEach(function(child) {
if (child == self.topChild) if (child == self.getTopChild())
child.setZ(topZIndex + 1); child.setZ(topZIndex + 1);
else { else {
child.setZ(zIndex); child.setZ(zIndex);
@ -1436,11 +1435,12 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
var self = this; var self = this;
var children = []; var children = [];
// ensure this.topChild is the first item in childrenToArrange // ensure topChild is the first item in childrenToArrange
let topChildPos = childrenToArrange.indexOf(this.topChild); let topChild = this.getTopChild();
let topChildPos = childrenToArrange.indexOf(topChild);
if (topChildPos > 0) { if (topChildPos > 0) {
childrenToArrange.splice(topChildPos, 1); childrenToArrange.splice(topChildPos, 1);
childrenToArrange.unshift(this.topChild); childrenToArrange.unshift(topChild);
} }
childrenToArrange.forEach(function GroupItem__stackArrange_order(child) { childrenToArrange.forEach(function GroupItem__stackArrange_order(child) {
@ -1495,7 +1495,6 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
box.inset(8, 8); box.inset(8, 8);
arrangeOptions = Utils.extend({}, options, {z: 99999}); arrangeOptions = Utils.extend({}, options, {z: 99999});
} else { } else {
this.topChild = null;
this._isStacked = false; this._isStacked = false;
arrangeOptions = Utils.extend({}, options, { arrangeOptions = Utils.extend({}, options, {
columns: this._columns columns: this._columns
@ -1541,8 +1540,7 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
var self = this; var self = this;
// ___ we're stacked, and command is held down so expand // ___ we're stacked, and command is held down so expand
GroupItems.setActiveGroupItem(self); GroupItems.setActiveGroupItem(self);
let activeTab = this.topChild || this.getChildren()[0]; UI.setActiveTab(this.getTopChild());
UI.setActiveTab(activeTab);
var startBounds = this.getChild(0).getBounds(); var startBounds = this.getChild(0).getBounds();
var $tray = iQ("<div>").css({ var $tray = iQ("<div>").css({
@ -1858,13 +1856,14 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
}, },
// ---------- // ----------
// Function: setTopChild // Function: getTopChild
// Sets the <Item> that should be displayed on top when in stack mode. // Gets the <Item> that should be displayed on top when in stack mode.
setTopChild: function GroupItem_setTopChild(topChild) { getTopChild: function GroupItem_getTopChild() {
this.topChild = topChild; if (!this.getChildren().length) {
return null;
}
this.arrange({animate: false}); return this.getActiveTab() || this.getChild(0);
// this.arrange calls this.save for us
}, },
// ---------- // ----------

View File

@ -719,11 +719,6 @@ TabItem.prototype = Utils.extend(new Item(), new Subscribable(), {
$tab.addClass("front"); $tab.addClass("front");
// If we're in a stacked group, make sure we become the
// topChild now so that we show the zoom animation correctly.
if (this.parent && this.parent.isStacked())
this.parent.setTopChild(this);
let animateZoom = gPrefBranch.getBoolPref("animate_zoom"); let animateZoom = gPrefBranch.getBoolPref("animate_zoom");
if (animateZoom) { if (animateZoom) {
// The scaleCheat of 2 here is a clever way to speed up the zoom-out // The scaleCheat of 2 here is a clever way to speed up the zoom-out
@ -1143,9 +1138,15 @@ let TabItems = {
_checkHeartbeat: function TabItems__checkHeartbeat() { _checkHeartbeat: function TabItems__checkHeartbeat() {
this._heartbeat = null; this._heartbeat = null;
if (this.isPaintingPaused() || !UI.isIdle) if (this.isPaintingPaused())
return; return;
// restart the heartbeat to update all waiting tabs once the UI becomes idle
if (!UI.isIdle()) {
this.startHeartbeat();
return;
}
let accumTime = 0; let accumTime = 0;
let items = this._tabsWaitingForUpdate.getItems(); let items = this._tabsWaitingForUpdate.getItems();
// Do as many updates as we can fit into a "perceived" amount // Do as many updates as we can fit into a "perceived" amount

View File

@ -497,9 +497,6 @@ let UI = {
self.setActiveTab(item); self.setActiveTab(item);
if (activeGroupItem && item.parent)
activeGroupItem.setTopChild(item);
self._resize(true); self._resize(true);
dispatchEvent(event); dispatchEvent(event);

View File

@ -74,6 +74,14 @@ var testData = [
// Explicitly-defined ISO-8859-1 // Explicitly-defined ISO-8859-1
[new bmKeywordData("bmget-escaping2", "http://bmget/?esc=%s&raw=%S&mozcharset=ISO-8859-1", null, "foé"), [new bmKeywordData("bmget-escaping2", "http://bmget/?esc=%s&raw=%S&mozcharset=ISO-8859-1", null, "foé"),
new keywordResult("http://bmget/?esc=fo%E9&raw=foé", null)], new keywordResult("http://bmget/?esc=fo%E9&raw=foé", null)],
// Bug 359809: Test escaping +, /, and @
// UTF-8 default
[new bmKeywordData("bmget-escaping", "http://bmget/?esc=%s&raw=%S", null, "+/@"),
new keywordResult("http://bmget/?esc=%2B%2F%40&raw=+/@", null)],
// Explicitly-defined ISO-8859-1
[new bmKeywordData("bmget-escaping2", "http://bmget/?esc=%s&raw=%S&mozcharset=ISO-8859-1", null, "+/@"),
new keywordResult("http://bmget/?esc=%2B%2F%40&raw=+/@", null)],
]; ];
function test() { function test() {

View File

@ -128,8 +128,10 @@ _BROWSER_FILES = \
browser_tabview_bug635696.js \ browser_tabview_bug635696.js \
browser_tabview_bug640765.js \ browser_tabview_bug640765.js \
browser_tabview_bug641802.js \ browser_tabview_bug641802.js \
browser_tabview_bug642793.js \
browser_tabview_bug644097.js \ browser_tabview_bug644097.js \
browser_tabview_bug645653.js \ browser_tabview_bug645653.js \
browser_tabview_bug648882.js \
browser_tabview_bug649006.js \ browser_tabview_bug649006.js \
browser_tabview_bug649307.js \ browser_tabview_bug649307.js \
browser_tabview_bug651311.js \ browser_tabview_bug651311.js \

View File

@ -0,0 +1,27 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
newWindowWithTabView(testTopOfStack, loadTabs);
}
function loadTabs (win) {
for (let i = 0; i < 4; i++)
win.gBrowser.loadOneTab('about:blank', {inBackground: false});
win.gBrowser.selectedTab = win.gBrowser.tabs[2];
}
function testTopOfStack(win) {
registerCleanupFunction(function () { win.close(); });
let cw = win.TabView.getContentWindow();
groupItem = cw.GroupItems.getActiveGroupItem();
ok(!groupItem.isStacked(), 'groupItem is not stacked');
groupItem.setSize(150, 150);
groupItem.setUserSize();
ok(groupItem.isStacked(), 'groupItem is now stacked');
ok(groupItem.isTopOfStack(groupItem.getChild(2)),
'the third tab is on top of stack');
finish();
}

View File

@ -0,0 +1,33 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
newWindowWithTabView(function (win) {
registerCleanupFunction(function () win.close());
let cw = win.TabView.getContentWindow();
let tab = win.gBrowser.tabs[0];
let tabItem = tab._tabViewTabItem;
let isIdle = false;
// We replace UI.isIdle() here to not rely on setTimeout(). While this
// function returns false (busy) we expect no tabItem updates to happen.
let busyCount = 5;
cw.UI.isIdle = function () {
return isIdle = (0 > --busyCount);
};
cw.TabItems.pausePainting();
tabItem.addSubscriber(tabItem, "updated", function () {
tabItem.removeSubscriber(tabItem, "updated");
ok(isIdle, "tabItem is updated only when UI is idle");
finish();
});
cw.TabItems.update(tab);
cw.TabItems.resumePainting();
});
}

View File

@ -121,14 +121,14 @@ function onTabViewWindowLoaded(win) {
let stackCenter = children[0].getBounds().center(); let stackCenter = children[0].getBounds().center();
ok(stackCenter.y < expanderBounds.center().y, "The expander is below the stack."); ok(stackCenter.y < expanderBounds.center().y, "The expander is below the stack.");
is(group.topChild, children[1], "The top child in the stack is the second tab item"); is(group.getTopChild(), children[1], "The top child in the stack is the second tab item");
let topChildzIndex = children[1].zIndex; let topChildzIndex = children[1].zIndex;
// the second tab item should have the largest z-index. // the second tab item should have the largest z-index.
// only check the first 6 tabs as the stack only contains 6 tab items. // only check the first 6 tabs as the stack only contains 6 tab items.
for (let i = 0; i < 6; i++) { for (let i = 0; i < 6; i++) {
if (i != 1) if (i != 1)
ok(children[i].zIndex < topChildzIndex, ok(children[i].zIndex < topChildzIndex,
"The child[" + i + "] has smaller zIndex than second dhild"); "The child[" + i + "] has smaller zIndex than second child");
} }
// okay, expand this group one last time // okay, expand this group one last time
@ -160,7 +160,7 @@ function onTabViewWindowLoaded(win) {
let stackCenter = children[0].getBounds().center(); let stackCenter = children[0].getBounds().center();
ok(stackCenter.y < expanderBounds.center().y, "The expander is below the stack."); ok(stackCenter.y < expanderBounds.center().y, "The expander is below the stack.");
is(group.topChild, children[1], is(group.getTopChild(), children[1],
"The top child in the stack is still the second tab item"); "The top child in the stack is still the second tab item");
let topChildzIndex = children[1].zIndex; let topChildzIndex = children[1].zIndex;
// the second tab item should have the largest z-index. // the second tab item should have the largest z-index.

View File

@ -2,7 +2,6 @@ browser.jar:
% content browser %content/browser/ contentaccessible=yes % content browser %content/browser/ contentaccessible=yes
#ifdef XP_MACOSX #ifdef XP_MACOSX
% overlay chrome://mozapps/content/downloads/downloads.xul chrome://browser/content/downloadManagerOverlay.xul % overlay chrome://mozapps/content/downloads/downloads.xul chrome://browser/content/downloadManagerOverlay.xul
% overlay chrome://mozapps/content/extensions/extensions.xul chrome://browser/content/extensionsManagerOverlay.xul
% overlay chrome://global/content/console.xul chrome://browser/content/jsConsoleOverlay.xul % overlay chrome://global/content/console.xul chrome://browser/content/jsConsoleOverlay.xul
% overlay chrome://mozapps/content/update/updates.xul chrome://browser/content/softwareUpdateOverlay.xul % overlay chrome://mozapps/content/update/updates.xul chrome://browser/content/softwareUpdateOverlay.xul
#endif #endif
@ -79,7 +78,6 @@ browser.jar:
#ifdef XP_MACOSX #ifdef XP_MACOSX
* content/browser/macBrowserOverlay.xul (content/macBrowserOverlay.xul) * content/browser/macBrowserOverlay.xul (content/macBrowserOverlay.xul)
* content/browser/downloadManagerOverlay.xul (content/downloadManagerOverlay.xul) * content/browser/downloadManagerOverlay.xul (content/downloadManagerOverlay.xul)
* content/browser/extensionsManagerOverlay.xul (content/extensionsManagerOverlay.xul)
* content/browser/jsConsoleOverlay.xul (content/jsConsoleOverlay.xul) * content/browser/jsConsoleOverlay.xul (content/jsConsoleOverlay.xul)
* content/browser/softwareUpdateOverlay.xul (content/softwareUpdateOverlay.xul) * content/browser/softwareUpdateOverlay.xul (content/softwareUpdateOverlay.xul)
#endif #endif

View File

@ -62,7 +62,6 @@ XPCOMUtils.defineLazyGetter(this, "PlacesUtils", function() {
return PlacesUtils; return PlacesUtils;
}); });
const PREF_EM_NEW_ADDONS_LIST = "extensions.newAddons";
const PREF_PLUGINS_NOTIFYUSER = "plugins.update.notifyUser"; const PREF_PLUGINS_NOTIFYUSER = "plugins.update.notifyUser";
const PREF_PLUGINS_UPDATEURL = "plugins.update.url"; const PREF_PLUGINS_UPDATEURL = "plugins.update.url";
@ -397,24 +396,6 @@ BrowserGlue.prototype = {
if (Services.prefs.prefHasUserValue("app.update.postupdate")) if (Services.prefs.prefHasUserValue("app.update.postupdate"))
this._showUpdateNotification(); this._showUpdateNotification();
// If new add-ons were installed during startup open the add-ons manager.
if (Services.prefs.prefHasUserValue(PREF_EM_NEW_ADDONS_LIST)) {
var args = Cc["@mozilla.org/supports-array;1"].
createInstance(Ci.nsISupportsArray);
var str = Cc["@mozilla.org/supports-string;1"].
createInstance(Ci.nsISupportsString);
str.data = "";
args.AppendElement(str);
var str = Cc["@mozilla.org/supports-string;1"].
createInstance(Ci.nsISupportsString);
str.data = Services.prefs.getCharPref(PREF_EM_NEW_ADDONS_LIST);
args.AppendElement(str);
const EMURL = "chrome://mozapps/content/extensions/extensions.xul";
const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable";
Services.ww.openWindow(null, EMURL, "_blank", EMFEATURES, args);
Services.prefs.clearUserPref(PREF_EM_NEW_ADDONS_LIST);
}
// Load the "more info" page for a locked places.sqlite // Load the "more info" page for a locked places.sqlite
// This property is set earlier by places-database-locked topic. // This property is set earlier by places-database-locked topic.
if (this._isPlacesDatabaseLocked) { if (this._isPlacesDatabaseLocked) {

View File

@ -203,10 +203,6 @@ PlacesController.prototype = {
!PlacesUtils.nodeIsLivemarkItem(selectedNode)) !PlacesUtils.nodeIsLivemarkItem(selectedNode))
return true; return true;
return false; return false;
case "placesCmd_reloadMicrosummary":
var selectedNode = this._view.selectedNode;
return selectedNode && PlacesUtils.nodeIsBookmark(selectedNode) &&
PlacesUtils.microsummaries.hasMicrosummary(selectedNode.itemId);
case "placesCmd_reload": case "placesCmd_reload":
// Livemark containers // Livemark containers
var selectedNode = this._view.selectedNode; var selectedNode = this._view.selectedNode;
@ -293,9 +289,6 @@ PlacesController.prototype = {
case "placesCmd_reload": case "placesCmd_reload":
this.reloadSelectedLivemark(); this.reloadSelectedLivemark();
break; break;
case "placesCmd_reloadMicrosummary":
this.reloadSelectedMicrosummary();
break;
case "placesCmd_sortBy:name": case "placesCmd_sortBy:name":
this.sortFolderByName(); this.sortFolderByName();
break; break;
@ -505,9 +498,6 @@ PlacesController.prototype = {
if (PlacesUtils.nodeIsBookmark(node)) { if (PlacesUtils.nodeIsBookmark(node)) {
nodeData["bookmark"] = true; nodeData["bookmark"] = true;
PlacesUtils.nodeIsTagQuery(node.parent) PlacesUtils.nodeIsTagQuery(node.parent)
var mss = PlacesUtils.microsummaries;
if (mss.hasMicrosummary(node.itemId))
nodeData["microsummary"] = true;
var parentNode = node.parent; var parentNode = node.parent;
if (parentNode) { if (parentNode) {
@ -741,16 +731,6 @@ PlacesController.prototype = {
PlacesUtils.livemarks.reloadLivemarkFolder(selectedNode.itemId); PlacesUtils.livemarks.reloadLivemarkFolder(selectedNode.itemId);
}, },
/**
* Reload the microsummary associated with the selection
*/
reloadSelectedMicrosummary: function PC_reloadSelectedMicrosummary() {
var selectedNode = this._view.selectedNode;
var mss = PlacesUtils.microsummaries;
if (mss.hasMicrosummary(selectedNode.itemId))
mss.refreshMicrosummary(selectedNode.itemId);
},
/** /**
* Opens the links in the selected folder, or the selected links in new tabs. * Opens the links in the selected folder, or the selected links in new tabs.
*/ */
@ -1574,7 +1554,6 @@ function goUpdatePlacesCommands() {
updatePlacesCommand("placesCmd_show:info"); updatePlacesCommand("placesCmd_show:info");
updatePlacesCommand("placesCmd_moveBookmarks"); updatePlacesCommand("placesCmd_moveBookmarks");
updatePlacesCommand("placesCmd_reload"); updatePlacesCommand("placesCmd_reload");
updatePlacesCommand("placesCmd_reloadMicrosummary");
updatePlacesCommand("placesCmd_sortBy:name"); updatePlacesCommand("placesCmd_sortBy:name");
updatePlacesCommand("placesCmd_cut"); updatePlacesCommand("placesCmd_cut");
updatePlacesCommand("placesCmd_copy"); updatePlacesCommand("placesCmd_copy");

View File

@ -36,7 +36,6 @@
* ***** END LICENSE BLOCK ***** */ * ***** END LICENSE BLOCK ***** */
const LAST_USED_ANNO = "bookmarkPropertiesDialog/folderLastUsed"; const LAST_USED_ANNO = "bookmarkPropertiesDialog/folderLastUsed";
const STATIC_TITLE_ANNO = "bookmarks/staticTitle";
const MAX_FOLDER_ITEM_IN_MENU_LIST = 5; const MAX_FOLDER_ITEM_IN_MENU_LIST = 5;
var gEditItemOverlay = { var gEditItemOverlay = {
@ -49,7 +48,6 @@ var gEditItemOverlay = {
_multiEdit: false, _multiEdit: false,
_itemType: -1, _itemType: -1,
_readOnly: false, _readOnly: false,
_microsummaries: null,
_hiddenRows: [], _hiddenRows: [],
_observersAdded: false, _observersAdded: false,
_staticFoldersListBuilt: false, _staticFoldersListBuilt: false,
@ -367,8 +365,7 @@ var gEditItemOverlay = {
}, },
QueryInterface: function EIO_QueryInterface(aIID) { QueryInterface: function EIO_QueryInterface(aIID) {
if (aIID.equals(Ci.nsIMicrosummaryObserver) || if (aIID.equals(Ci.nsIDOMEventListener) ||
aIID.equals(Ci.nsIDOMEventListener) ||
aIID.equals(Ci.nsINavBookmarkObserver) || aIID.equals(Ci.nsINavBookmarkObserver) ||
aIID.equals(Ci.nsISupports)) aIID.equals(Ci.nsISupports))
return this; return this;
@ -380,108 +377,16 @@ var gEditItemOverlay = {
return document.getElementById("editBMPanel_" + aID); return document.getElementById("editBMPanel_" + aID);
}, },
_createMicrosummaryMenuItem:
function EIO__createMicrosummaryMenuItem(aMicrosummary) {
var menuItem = document.createElement("menuitem");
// Store a reference to the microsummary in the menu item, so we know
// which microsummary this menu item represents when it's time to
// save changes or load its content.
menuItem.microsummary = aMicrosummary;
// Content may have to be generated asynchronously; we don't necessarily
// have it now. If we do, great; otherwise, fall back to the generator
// name, then the URI, and we trigger a microsummary content update. Once
// the update completes, the microsummary will notify our observer to
// update the corresponding menu-item.
// XXX Instead of just showing the generator name or (heaven forbid)
// its URI when we don't have content, we should tell the user that
// we're loading the microsummary, perhaps with some throbbing to let
// her know it is in progress.
if (aMicrosummary.content)
menuItem.setAttribute("label", aMicrosummary.content);
else {
menuItem.setAttribute("label", aMicrosummary.generator.name ||
aMicrosummary.generator.uri.spec);
aMicrosummary.update();
}
return menuItem;
},
_getItemStaticTitle: function EIO__getItemStaticTitle() { _getItemStaticTitle: function EIO__getItemStaticTitle() {
if (this._itemId == -1) if (this._itemId == -1)
return PlacesUtils.history.getPageTitle(this._uri); return PlacesUtils.history.getPageTitle(this._uri);
const annos = PlacesUtils.annotations;
if (annos.itemHasAnnotation(this._itemId, STATIC_TITLE_ANNO))
return annos.getItemAnnotation(this._itemId, STATIC_TITLE_ANNO);
return PlacesUtils.bookmarks.getItemTitle(this._itemId); return PlacesUtils.bookmarks.getItemTitle(this._itemId);
}, },
_initNamePicker: function EIO_initNamePicker() { _initNamePicker: function EIO_initNamePicker() {
var userEnteredNameField = this._element("userEnteredName");
var namePicker = this._element("namePicker"); var namePicker = this._element("namePicker");
var droppable = false; namePicker.value = this._getItemStaticTitle();
userEnteredNameField.label = this._getItemStaticTitle();
// clean up old entries
var menupopup = namePicker.menupopup;
while (menupopup.childNodes.length > 2)
menupopup.removeChild(menupopup.lastChild);
if (this._microsummaries) {
this._microsummaries.removeObserver(this);
this._microsummaries = null;
}
var itemToSelect = userEnteredNameField;
try {
if (this._itemId != -1 &&
this._itemType == Ci.nsINavBookmarksService.TYPE_BOOKMARK &&
!this._readOnly)
this._microsummaries = PlacesUtils.microsummaries
.getMicrosummaries(this._uri, -1);
}
catch(ex) {
// getMicrosummaries will throw an exception in at least two cases:
// 1. the bookmarked URI contains a scheme that the service won't
// download for security reasons (currently it only handles http,
// https, and file);
// 2. the page to which the URI refers isn't HTML or XML (the only two
// content types the service knows how to summarize).
this._microsummaries = null;
}
if (this._microsummaries) {
var enumerator = this._microsummaries.Enumerate();
if (enumerator.hasMoreElements()) {
// Show the drop marker if there are microsummaries
droppable = true;
while (enumerator.hasMoreElements()) {
var microsummary = enumerator.getNext()
.QueryInterface(Ci.nsIMicrosummary);
var menuItem = this._createMicrosummaryMenuItem(microsummary);
if (PlacesUtils.microsummaries
.isMicrosummary(this._itemId, microsummary))
itemToSelect = menuItem;
menupopup.appendChild(menuItem);
}
}
this._microsummaries.addObserver(this);
}
if (namePicker.selectedItem == itemToSelect)
namePicker.value = itemToSelect.label;
else
namePicker.selectedItem = itemToSelect;
namePicker.setAttribute("droppable", droppable);
namePicker.readOnly = this._readOnly; namePicker.readOnly = this._readOnly;
// clear the undo stack // clear the undo stack
@ -490,40 +395,6 @@ var gEditItemOverlay = {
editor.transactionManager.clear(); editor.transactionManager.clear();
}, },
// nsIMicrosummaryObserver
onContentLoaded: function EIO_onContentLoaded(aMicrosummary) {
var namePicker = this._element("namePicker");
var childNodes = namePicker.menupopup.childNodes;
// 0: user-entered item; 1: separator
for (var i = 2; i < childNodes.length; i++) {
if (childNodes[i].microsummary == aMicrosummary) {
var newLabel = aMicrosummary.content;
// XXXmano: non-editable menulist would do this for us, see bug 360220
// We should fix editable-menulists to set the DOMAttrModified handler
// as well.
//
// Also note the order importance: if the label of the menu-item is
// set to something different than the menulist's current value,
// the menulist no longer has selectedItem set
if (namePicker.selectedItem == childNodes[i])
namePicker.value = newLabel;
childNodes[i].label = newLabel;
return;
}
}
},
onElementAppended: function EIO_onElementAppended(aMicrosummary) {
var namePicker = this._element("namePicker");
namePicker.menupopup
.appendChild(this._createMicrosummaryMenuItem(aMicrosummary));
// Make sure the drop-marker is shown
namePicker.setAttribute("droppable", "true");
},
uninitPanel: function EIO_uninitPanel(aHideCollapsibleElements) { uninitPanel: function EIO_uninitPanel(aHideCollapsibleElements) {
if (aHideCollapsibleElements) { if (aHideCollapsibleElements) {
// hide the folder tree if it was previously visible // hide the folder tree if it was previously visible
@ -543,10 +414,7 @@ var gEditItemOverlay = {
this._observersAdded = false; this._observersAdded = false;
} }
if (this._microsummaries) {
this._microsummaries.removeObserver(this);
this._microsummaries = null;
}
this._itemId = -1; this._itemId = -1;
this._uri = null; this._uri = null;
this._uris = []; this._uris = [];
@ -673,11 +541,6 @@ var gEditItemOverlay = {
return false; return false;
}, },
onNamePickerInput: function EIO_onNamePickerInput() {
var title = this._element("namePicker").value;
this._element("userEnteredName").label = title;
},
onNamePickerChange: function EIO_onNamePickerChange() { onNamePickerChange: function EIO_onNamePickerChange() {
if (this._itemId == -1) if (this._itemId == -1)
return; return;
@ -687,7 +550,7 @@ var gEditItemOverlay = {
const ptm = PlacesUIUtils.ptm; const ptm = PlacesUIUtils.ptm;
// Here we update either the item title or its cached static title // Here we update either the item title or its cached static title
var newTitle = this._element("userEnteredName").label; var newTitle = namePicker.value;
if (!newTitle && if (!newTitle &&
PlacesUtils.bookmarks.getFolderIdForItem(this._itemId) == PlacesUtils.tagsFolderId) { PlacesUtils.bookmarks.getFolderIdForItem(this._itemId) == PlacesUtils.tagsFolderId) {
// We don't allow setting an empty title for a tag, restore the old one. // We don't allow setting an empty title for a tag, restore the old one.
@ -695,32 +558,7 @@ var gEditItemOverlay = {
} }
else if (this._getItemStaticTitle() != newTitle) { else if (this._getItemStaticTitle() != newTitle) {
this._mayUpdateFirstEditField("namePicker"); this._mayUpdateFirstEditField("namePicker");
if (PlacesUtils.microsummaries.hasMicrosummary(this._itemId)) { txns.push(ptm.editItemTitle(this._itemId, newTitle));
// Note: this implicitly also takes care of the microsummary->static
// title case, the removeMicorosummary method in the service will set
// the item-title to the value of this annotation.
//
// XXXmano: use a transaction
PlacesUtils.setAnnotationsForItem(this._itemId,
[{name: STATIC_TITLE_ANNO,
value: newTitle}]);
}
else
txns.push(ptm.editItemTitle(this._itemId, newTitle));
}
var newMicrosummary = namePicker.selectedItem.microsummary;
// Only add a microsummary update to the transaction if the microsummary
// has actually changed, i.e. the user selected no microsummary, but the
// bookmark previously had one, or the user selected a microsummary which
// is not the one the bookmark previously had
if ((newMicrosummary == null &&
PlacesUtils.microsummaries.hasMicrosummary(this._itemId)) ||
(newMicrosummary != null &&
!PlacesUtils.microsummaries
.isMicrosummary(this._itemId, newMicrosummary))) {
txns.push(ptm.editBookmarkMicrosummary(this._itemId, newMicrosummary));
} }
var aggregate = ptm.aggregateTransactions("Edit Item Title", txns); var aggregate = ptm.aggregateTransactions("Edit Item Title", txns);
@ -1121,20 +959,11 @@ var gEditItemOverlay = {
switch (aProperty) { switch (aProperty) {
case "title": case "title":
if (PlacesUtils.annotations.itemHasAnnotation(this._itemId, var namePicker = this._element("namePicker");
STATIC_TITLE_ANNO)) if (namePicker.value != aValue) {
return; // onContentLoaded updates microsummary-items namePicker.value = aValue;
// clear undo stack
var userEnteredNameField = this._element("userEnteredName"); namePicker.editor.transactionManager.clear();
if (userEnteredNameField.value != aValue) {
userEnteredNameField.value = aValue;
var namePicker = this._element("namePicker");
if (namePicker.selectedItem == userEnteredNameField) {
namePicker.label = aValue;
// clear undo stack
namePicker.editor.transactionManager.clear();
}
} }
break; break;
case "uri": case "uri":
@ -1144,7 +973,7 @@ var gEditItemOverlay = {
getService(Ci.nsIIOService). getService(Ci.nsIIOService).
newURI(aValue, null, null); newURI(aValue, null, null);
this._initTextField("locationField", this._uri.spec); this._initTextField("locationField", this._uri.spec);
this._initNamePicker(); // for microsummaries this._initNamePicker();
this._initTextField("tagsField", this._initTextField("tagsField",
PlacesUtils.tagging PlacesUtils.tagging
.getTagsForURI(this._uri).join(", "), .getTagsForURI(this._uri).join(", "),

View File

@ -65,22 +65,9 @@
accesskey="&editBookmarkOverlay.name.accesskey;" accesskey="&editBookmarkOverlay.name.accesskey;"
control="editBMPanel_namePicker" control="editBMPanel_namePicker"
observes="paneElementsBroadcaster"/> observes="paneElementsBroadcaster"/>
<menulist id="editBMPanel_namePicker" <textbox id="editBMPanel_namePicker"
flex="1" onblur="gEditItemOverlay.onNamePickerChange();"
editable="true" observes="paneElementsBroadcaster"/>
droppable="false"
oninput="gEditItemOverlay.onNamePickerInput();"
onblur="gEditItemOverlay.onNamePickerChange();"
oncommand="gEditItemOverlay.onNamePickerChange();"
observes="paneElementsBroadcaster">
<menupopup>
<menuitem id="editBMPanel_userEnteredName"/>
<menuitem disabled="true">
<menuseparator flex="1"/>
<label value="&editBookmarkOverlay.liveTitlesSeparator.label;"/>
</menuitem>
</menupopup>
</menulist>
</row> </row>
<row align="center" id="editBMPanel_locationRow"> <row align="center" id="editBMPanel_locationRow">

View File

@ -101,8 +101,6 @@
observes="placesCmd_show:info"/> observes="placesCmd_show:info"/>
<command id="placesCmd_reload" <command id="placesCmd_reload"
oncommand="goDoPlacesCommand('placesCmd_reload');"/> oncommand="goDoPlacesCommand('placesCmd_reload');"/>
<command id="placesCmd_reloadMicrosummary"
oncommand="goDoPlacesCommand('placesCmd_reloadMicrosummary');"/>
<command id="placesCmd_sortBy:name" <command id="placesCmd_sortBy:name"
oncommand="goDoPlacesCommand('placesCmd_sortBy:name');"/> oncommand="goDoPlacesCommand('placesCmd_sortBy:name');"/>
<command id="placesCmd_moveBookmarks" <command id="placesCmd_moveBookmarks"
@ -239,12 +237,6 @@
accesskey="&cmd.reloadLivebookmark.accesskey;" accesskey="&cmd.reloadLivebookmark.accesskey;"
closemenu="single" closemenu="single"
selection="livemark/feedURI"/> selection="livemark/feedURI"/>
<menuitem id="placesContext_reloadMicrosummary"
command="placesCmd_reloadMicrosummary"
label="&cmd.reloadMicrosummary.label;"
accesskey="&cmd.reloadMicrosummary.accesskey;"
closemenu="single"
selection="microsummary"/>
<menuitem id="placesContext_sortBy:name" <menuitem id="placesContext_sortBy:name"
command="placesCmd_sortBy:name" command="placesCmd_sortBy:name"
label="&cmd.sortby_name.label;" label="&cmd.sortby_name.label;"

View File

@ -320,8 +320,8 @@ var PlacesUIUtils = {
function PUIU__reportDeprecatedAddBookmarkMethod() { function PUIU__reportDeprecatedAddBookmarkMethod() {
// Removes "PUIU_". // Removes "PUIU_".
let oldFuncName = arguments.callee.caller.name.slice(5); let oldFuncName = arguments.callee.caller.name.slice(5);
Cu.reportError(oldFuncName + " is deprecated and will be removed in a \ Cu.reportError(oldFuncName + " is deprecated and will be removed in a " +
future release. Use showBookmarkDialog instead"); "future release. Use showBookmarkDialog instead.");
}, },
/** /**
@ -810,16 +810,16 @@ var PlacesUIUtils = {
// If a view wasn't expected, the method should have got a window. // If a view wasn't expected, the method should have got a window.
if (aView === null) { if (aView === null) {
Components.utils.reportError("The api has changed. A window should be \ Components.utils.reportError("The api has changed. A window should be " +
passed to " + caller.name + ". Not \ "passed to " + caller.name + ". Not " +
passing a window will throw in a future \ "passing a window will throw in a future " +
release."); "release.");
} }
else { else {
Components.utils.reportError("The api has changed. A places view \ Components.utils.reportError("The api has changed. A places view " +
should be passed to " + caller.name + ". \ "should be passed to " + caller.name + ". " +
Not passing a view will throw in a future \ "Not passing a view will throw in a future " +
release."); "release.");
} }
// This could certainly break in some edge cases (like bug 562998), but // This could certainly break in some edge cases (like bug 562998), but
@ -1324,9 +1324,6 @@ XPCOMUtils.defineLazyGetter(PlacesUIUtils, "ptm", function() {
editLivemarkFeedURI: function(aLivemarkId, aFeedURI) editLivemarkFeedURI: function(aLivemarkId, aFeedURI)
new PlacesEditLivemarkFeedURITransaction(aLivemarkId, aFeedURI), new PlacesEditLivemarkFeedURITransaction(aLivemarkId, aFeedURI),
editBookmarkMicrosummary: function(aItemId, aNewMicrosummary)
new PlacesEditBookmarkMicrosummaryTransaction(aItemId, aNewMicrosummary),
editItemDateAdded: function(aItemId, aNewDateAdded) editItemDateAdded: function(aItemId, aNewDateAdded)
new PlacesEditItemDateAddedTransaction(aItemId, aNewDateAdded), new PlacesEditItemDateAddedTransaction(aItemId, aNewDateAdded),

View File

@ -313,7 +313,6 @@ gTests.push({
this._itemId = this.window.gEditItemOverlay._itemId; this._itemId = this.window.gEditItemOverlay._itemId;
// Change folder name // Change folder name
var namePicker = this.window.document.getElementById("editBMPanel_namePicker"); var namePicker = this.window.document.getElementById("editBMPanel_namePicker");
var userEnteredName = this.window.document.getElementById("editBMPanel_userEnteredName");
var self = this; var self = this;
this.window.addEventListener("unload", function(event) { this.window.addEventListener("unload", function(event) {
@ -324,7 +323,6 @@ gTests.push({
}, false); }, false);
namePicker.value = "n"; namePicker.value = "n";
userEnteredName.label = "n";
info("About to focus the namePicker field"); info("About to focus the namePicker field");
namePicker.focus(); namePicker.focus();
EventUtils.synthesizeKey("VK_RETURN", {}, this.window); EventUtils.synthesizeKey("VK_RETURN", {}, this.window);

View File

@ -19,10 +19,6 @@
<DL><p> <DL><p>
<DT><A HREF="http://test/post" ADD_DATE="1177375336" LAST_MODIFIED="1177375423" SHORTCUTURL="test" WEB_PANEL="true" POST_DATA="hidden1%3Dbar&amp;text1%3D%25s" LAST_CHARSET="ISO-8859-1" ID="rdf:#$pYFe7">test post keyword</A> <DT><A HREF="http://test/post" ADD_DATE="1177375336" LAST_MODIFIED="1177375423" SHORTCUTURL="test" WEB_PANEL="true" POST_DATA="hidden1%3Dbar&amp;text1%3D%25s" LAST_CHARSET="ISO-8859-1" ID="rdf:#$pYFe7">test post keyword</A>
<DD>item description <DD>item description
<!-- XXX Bug 380468
<DT><A HREF="http://test/micsum" ADD_DATE="1177375377" LAST_MODIFIED="1177541023" LAST_CHARSET="ISO-8859-1" MICSUM_GEN_URI="urn:source:http://dietrich.ganx4.com/mozilla/test-microsummary.xml" MICSUM_EXPIRATION="1177542823620" GENERATED_TITLE="id:462fd9a2e5b66" ID="rdf:#$qYFe7">test microsummary</A>
<DD>test microsummary
-->
</DL> </DL>
<DT><H3 UNFILED_BOOKMARKS_FOLDER="true">Unsorted Bookmarks</H3> <DT><H3 UNFILED_BOOKMARKS_FOLDER="true">Unsorted Bookmarks</H3>
<DL><p> <DL><p>

View File

@ -223,24 +223,6 @@ function testCanonicalBookmarks() {
PlacesUtils.annotations.getItemAnnotation(testBookmark1.itemId, PlacesUtils.annotations.getItemAnnotation(testBookmark1.itemId,
DESCRIPTION_ANNO)); DESCRIPTION_ANNO));
/*
// XXX Bug 380468
// test bookmark 2
var testBookmark2 = testFolder.getChild(1);
// url
do_check_eq("http://test/micsum", testBookmark2.uri);
// title
do_check_eq("test microsummary", testBookmark2.title);
// check that it's a microsummary
var micsum = mssvc.getMicrosummary(testBookmark2.itemId);
if (!micsum)
do_throw("Could not import microsummary");
// check generator uri
var generator = micsum.generator;
do_check_eq("urn:source:http://dietrich.ganx4.com/mozilla/test-microsummary.xml", generator.uri.spec);
// expiration and generated title can change, so don't test them
*/
// clean up // clean up
testFolder.containerOpen = false; testFolder.containerOpen = false;
rootNode.containerOpen = false; rootNode.containerOpen = false;

View File

@ -71,13 +71,6 @@ try {
do_throw("Could not get favicon service\n"); do_throw("Could not get favicon service\n");
} }
// Get microsummary service
try {
var mssvc = Cc["@mozilla.org/microsummary/service;1"].getService(Ci.nsIMicrosummaryService);
} catch(ex) {
do_throw("Could not get microsummary service\n");
}
// Get io service // Get io service
try { try {
var iosvc = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); var iosvc = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
@ -266,23 +259,6 @@ function testCanonicalBookmarks(aFolder) {
annosvc.getItemAnnotation(testBookmark1.itemId, annosvc.getItemAnnotation(testBookmark1.itemId,
DESCRIPTION_ANNO)); DESCRIPTION_ANNO));
/*
// XXX Bug 380468
// test bookmark 2
var testBookmark2 = testFolder.getChild(1);
// url
do_check_eq("http://test/micsum", testBookmark2.uri);
// title
do_check_eq("test microsummary", testBookmark2.title);
// check that it's a microsummary
var micsum = mssvc.getMicrosummary(testBookmark2.itemId);
if (!micsum)
do_throw("Could not import microsummary");
// check generator uri
var generator = micsum.generator;
do_check_eq("urn:source:http://dietrich.ganx4.com/mozilla/test-microsummary.xml", generator.uri.spec);
// expiration and generated title can change, so don't test them
*/
// clean up // clean up
testFolder.containerOpen = false; testFolder.containerOpen = false;
rootNode.containerOpen = false; rootNode.containerOpen = false;

View File

@ -40,7 +40,6 @@
var bmsvc = PlacesUtils.bookmarks; var bmsvc = PlacesUtils.bookmarks;
var lmsvc = PlacesUtils.livemarks; var lmsvc = PlacesUtils.livemarks;
var mss = PlacesUtils.microsummaries;
var ptSvc = PlacesUIUtils.ptm; var ptSvc = PlacesUIUtils.ptm;
var tagssvc = PlacesUtils.tagging; var tagssvc = PlacesUtils.tagging;
var annosvc = PlacesUtils.annotations; var annosvc = PlacesUtils.annotations;
@ -580,22 +579,6 @@ function run_test() {
do_check_eq(1, bmsvc.getItemIndex(b2)); do_check_eq(1, bmsvc.getItemIndex(b2));
do_check_eq(2, bmsvc.getItemIndex(b3)); do_check_eq(2, bmsvc.getItemIndex(b3));
// editBookmarkMicrosummary
var tmpMs = mss.createMicrosummary(uri("http://testmicro.com"),
uri("http://dietrich.ganx4.com/mozilla/test-microsummary.xml"));
ptSvc.doTransaction(
ptSvc.createItem(uri("http://dietrich.ganx4.com/mozilla/test-microsummary-content.php"),
root, -1, "micro test", null, null, null));
var bId = (bmsvc.getBookmarkIdsForURI(uri("http://dietrich.ganx4.com/mozilla/test-microsummary-content.php")))[0];
do_check_true(!mss.hasMicrosummary(bId));
var txn18 = ptSvc.editBookmarkMicrosummary(bId, tmpMs);
txn18.doTransaction();
do_check_eq(observer._itemChangedId, bId);
do_check_true(mss.hasMicrosummary(bId));
txn18.undoTransaction();
do_check_eq(observer._itemChangedId, bId);
do_check_true(!mss.hasMicrosummary(bId));
// Testing edit Post Data // Testing edit Post Data
const POST_DATA_ANNO = "bookmarkProperties/POSTData"; const POST_DATA_ANNO = "bookmarkProperties/POSTData";
var postData = "foo"; var postData = "foo";

View File

@ -97,6 +97,15 @@ function done() {
Services.prefs.clearUserPref("browser.sessionstore.resume_from_crash"); Services.prefs.clearUserPref("browser.sessionstore.resume_from_crash");
} catch (e) {} } catch (e) {}
// Enumerate windows and close everything but our primary window. We can't
// use waitForFocus() because apparently it's buggy. See bug 599253.
let windowsEnum = Services.wm.getEnumerator("navigator:browser");
while (windowsEnum.hasMoreElements()) {
let currentWindow = windowsEnum.getNext();
if (currentWindow != window)
currentWindow.close();
}
ss.setBrowserState(stateBackup); ss.setBrowserState(stateBackup);
executeSoon(finish); executeSoon(finish);
} }

View File

@ -231,31 +231,6 @@ function (aSearchURL)
return 0; return 0;
} }
nsSidebar.prototype.addMicrosummaryGenerator =
function (generatorURL)
{
debug("addMicrosummaryGenerator(" + generatorURL + ")");
if (!/^https?:/i.test(generatorURL))
return;
var stringBundle = srGetStrBundle("chrome://browser/locale/sidebar/sidebar.properties");
var titleMessage = stringBundle.GetStringFromName("addMicsumGenConfirmTitle");
var dialogMessage = stringBundle.formatStringFromName("addMicsumGenConfirmText", [generatorURL], 1);
if (!this.promptService.confirm(null, titleMessage, dialogMessage))
return;
var ioService = Components.classes["@mozilla.org/network/io-service;1"].
getService(Components.interfaces.nsIIOService);
var generatorURI = ioService.newURI(generatorURL, null, null);
var microsummaryService = Components.classes["@mozilla.org/microsummary/service;1"].
getService(Components.interfaces.nsIMicrosummaryService);
if (microsummaryService)
microsummaryService.addGenerator(generatorURI);
}
// property of nsIClassInfo // property of nsIClassInfo
nsSidebar.prototype.flags = nsIClassInfo.DOM_OBJECT; nsSidebar.prototype.flags = nsIClassInfo.DOM_OBJECT;

View File

@ -391,6 +391,7 @@
@BINPATH@/components/nsSafebrowsingApplication.manifest @BINPATH@/components/nsSafebrowsingApplication.manifest
@BINPATH@/components/nsSafebrowsingApplication.js @BINPATH@/components/nsSafebrowsingApplication.js
@BINPATH@/components/nsURLClassifier.manifest @BINPATH@/components/nsURLClassifier.manifest
@BINPATH@/components/nsUrlClassifierHashCompleter.js
@BINPATH@/components/nsUrlClassifierListManager.js @BINPATH@/components/nsUrlClassifierListManager.js
@BINPATH@/components/nsUrlClassifierLib.js @BINPATH@/components/nsUrlClassifierLib.js
@BINPATH@/components/url-classifier.xpt @BINPATH@/components/url-classifier.xpt

View File

@ -77,6 +77,7 @@ components/xmlextras.xpt
components/xpcom.xpt components/xpcom.xpt
components/xpti.dat components/xpti.dat
components/xptitemp.dat components/xptitemp.dat
components/nsMicrosummaryService.js
defaults/pref/all.js defaults/pref/all.js
defaults/pref/bug259708.js defaults/pref/bug259708.js
defaults/pref/bug307259.js defaults/pref/bug307259.js
@ -875,7 +876,6 @@ xpicleanup@BIN_SUFFIX@
components/nsLoginInfo.js components/nsLoginInfo.js
components/nsLoginManager.js components/nsLoginManager.js
components/nsLoginManagerPrompter.js components/nsLoginManagerPrompter.js
components/nsMicrosummaryService.js
components/nsPlacesAutoComplete.js components/nsPlacesAutoComplete.js
components/nsPlacesDBFlush.js components/nsPlacesDBFlush.js
components/nsPlacesExpiration.js components/nsPlacesExpiration.js

View File

@ -104,7 +104,7 @@ can reach it easily. -->
<!ENTITY subscribeToPageMenuitem.label "Subscribe to This Page…"> <!ENTITY subscribeToPageMenuitem.label "Subscribe to This Page…">
<!ENTITY addCurPagesCmd.label "Bookmark All Tabs…"> <!ENTITY addCurPagesCmd.label "Bookmark All Tabs…">
<!ENTITY showAllBookmarks2.label "Show All Bookmarks"> <!ENTITY showAllBookmarks2.label "Show All Bookmarks">
<!ENTITY bookmarkAllCmd.label "Bookmark All Tabs…"> <!ENTITY unsortedBookmarksCmd.label "Unsorted Bookmarks">
<!ENTITY bookmarksToolbarChevron.tooltip "Show more bookmarks"> <!ENTITY bookmarksToolbarChevron.tooltip "Show more bookmarks">
<!ENTITY backCmd.label "Back"> <!ENTITY backCmd.label "Back">

View File

@ -6,7 +6,6 @@
<!ENTITY editBookmarkOverlay.feedLocation.accesskey "F"> <!ENTITY editBookmarkOverlay.feedLocation.accesskey "F">
<!ENTITY editBookmarkOverlay.siteLocation.label "Site Location:"> <!ENTITY editBookmarkOverlay.siteLocation.label "Site Location:">
<!ENTITY editBookmarkOverlay.siteLocation.accesskey "S"> <!ENTITY editBookmarkOverlay.siteLocation.accesskey "S">
<!ENTITY editBookmarkOverlay.liveTitlesSeparator.label "Live Titles">
<!ENTITY editBookmarkOverlay.folder.label "Folder:"> <!ENTITY editBookmarkOverlay.folder.label "Folder:">
<!ENTITY editBookmarkOverlay.foldersExpanderDown.tooltip "Show all the bookmarks folders"> <!ENTITY editBookmarkOverlay.foldersExpanderDown.tooltip "Show all the bookmarks folders">
<!ENTITY editBookmarkOverlay.expanderUp.tooltip "Hide"> <!ENTITY editBookmarkOverlay.expanderUp.tooltip "Hide">

View File

@ -76,8 +76,6 @@
<!ENTITY cmd.reloadLivebookmark.label "Reload Live Bookmark"> <!ENTITY cmd.reloadLivebookmark.label "Reload Live Bookmark">
<!ENTITY cmd.reloadLivebookmark.accesskey "R"> <!ENTITY cmd.reloadLivebookmark.accesskey "R">
<!ENTITY cmd.reloadMicrosummary.label "Reload Live Title">
<!ENTITY cmd.reloadMicrosummary.accesskey "R">
<!ENTITY cmd.moveBookmarks.label "Move…"> <!ENTITY cmd.moveBookmarks.label "Move…">
<!ENTITY cmd.moveBookmarks.accesskey "M"> <!ENTITY cmd.moveBookmarks.accesskey "M">

View File

@ -1,2 +0,0 @@
addMicsumGenConfirmTitle=Add Microsummary Generator
addMicsumGenConfirmText=Add the following microsummary generator?\n\nSource: %S

View File

@ -67,7 +67,6 @@
locale/browser/preferences/sync.dtd (%chrome/browser/preferences/sync.dtd) locale/browser/preferences/sync.dtd (%chrome/browser/preferences/sync.dtd)
#endif #endif
locale/browser/preferences/tabs.dtd (%chrome/browser/preferences/tabs.dtd) locale/browser/preferences/tabs.dtd (%chrome/browser/preferences/tabs.dtd)
locale/browser/sidebar/sidebar.properties (%chrome/browser/sidebar/sidebar.properties)
#ifdef MOZ_SERVICES_SYNC #ifdef MOZ_SERVICES_SYNC
locale/browser/syncBrand.dtd (%chrome/browser/syncBrand.dtd) locale/browser/syncBrand.dtd (%chrome/browser/syncBrand.dtd)
locale/browser/syncSetup.dtd (%chrome/browser/syncSetup.dtd) locale/browser/syncSetup.dtd (%chrome/browser/syncSetup.dtd)

View File

@ -405,7 +405,6 @@ menuitem:not([type]):not(.menuitem-tooltip):not(.menuitem-iconic-tooltip) {
#menu_reload, #menu_reload,
#placesContext_reload, #placesContext_reload,
#placesContext_reloadMicrosummary,
#context-reload, #context-reload,
#context-reloadframe { #context-reloadframe {
list-style-image: url("moz-icon://stock/gtk-refresh?size=menu"); list-style-image: url("moz-icon://stock/gtk-refresh?size=menu");

View File

@ -77,36 +77,6 @@
margin-bottom: 2px; margin-bottom: 2px;
} }
/**** name picker ****/
/* Make the microsummary picker look like a regular textbox instead of
* an editable menulist when no microsummaries are available.
*/
#editBMPanel_namePicker[droppable="false"] {
/* These rules come from the textbox element in textbox.css. */
-moz-appearance: textfield; /* Normal editable menulists set this to "none". */
cursor: text;
border: 2px solid;
-moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
-moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
-moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
padding: 2px 2px 3px;
-moz-padding-start: 4px;
background-color: -moz-Field;
color: -moz-FieldText;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
-moz-appearance: none; /* Normal editable menulists set this to "menulist-textfield". */
padding: 0;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker,
#editBMPanel_namePicker[droppable="false"] > menupopup {
display: none;
}
/* Hide the value column of the tag autocomplete popup /* Hide the value column of the tag autocomplete popup
* leaving only the comment column visible. This is * leaving only the comment column visible. This is
* so that only the tag being edited is shown in the * so that only the tag being edited is shown in the

View File

@ -198,7 +198,6 @@ menuitem[command="placesCmd_show:info"] {
list-style-image: url("moz-icon://stock/gtk-properties?size=menu"); list-style-image: url("moz-icon://stock/gtk-properties?size=menu");
} }
#placesContext_reload, #placesContext_reload {
#placesContext_reloadMicrosummary {
list-style-image: url("moz-icon://stock/gtk-refresh?size=menu"); list-style-image: url("moz-icon://stock/gtk-refresh?size=menu");
} }

View File

@ -1367,10 +1367,7 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action-
list-style-image: url("chrome://browser/skin/hud-style-expander-closed.png"); list-style-image: url("chrome://browser/skin/hud-style-expander-closed.png");
} }
/**** name picker ****/ #editBMPanel_tagsField {
#editBMPanel_tagsField,
#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
-moz-appearance: none !important; -moz-appearance: none !important;
-moz-padding-start: 3px !important; -moz-padding-start: 3px !important;
margin: 2px !important; margin: 2px !important;
@ -1383,25 +1380,16 @@ richlistitem[type~="action"][actiontype="switchtab"] > .ac-url-box > .ac-action-
min-height: 20px; min-height: 20px;
} }
#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box > html|*.menulist-editable-input {
color: inherit;
}
#editBMPanel_tagsField > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input:-moz-placeholder { #editBMPanel_tagsField > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input:-moz-placeholder {
color: #bbb; color: #bbb;
} }
#editBMPanel_tagsField[focused="true"], #editBMPanel_tagsField[focused="true"] {
#editBMPanel_namePicker[droppable="false"][focused="true"] > .menulist-editable-box {
@hudButtonFocused@ @hudButtonFocused@
background-color: #eee !important; background-color: #eee !important;
color: #000 !important; color: #000 !important;
} }
#editBMPanel_namePicker[droppable="false"][disabled="true"] > .menulist-editable-box {
color: #fff !important;
}
.editBMPanel_rowLabel { .editBMPanel_rowLabel {
text-align: end; text-align: end;
} }

View File

@ -92,70 +92,6 @@
margin: 6px 4px 0 4px; margin: 6px 4px 0 4px;
} }
/**** name picker ****/
/* Make the microsummary picker look like a regular textbox instead of
* an editable menulist when no microsummaries are available.
*/
#editBMPanel_namePicker[droppable="false"] {
-moz-appearance: none;
margin: 0px;
border: none;
padding: 0px;
height: auto !important;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker {
display: none;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
/* These rules are duplicates of the rules for the textbox element
* in textbox.css and should track changes in that file.
*/
-moz-appearance: textfield;
cursor: text;
margin: 4px 4px;
border: 3px solid;
-moz-border-top-colors: transparent #888888 #000000;
-moz-border-right-colors: transparent #FFFFFF #000000;
-moz-border-bottom-colors: transparent #FFFFFF #000000;
-moz-border-left-colors: transparent #888888 #000000;
border-top-right-radius: 2px;
border-bottom-left-radius: 2px;
padding: 0;
background-color: -moz-Field;
color: -moz-FieldText;
}
#editBMPanel_namePicker[droppable="false"][disabled="true"] > .menulist-editable-box {
cursor: default;
-moz-border-top-colors: transparent ThreeDShadow -moz-Dialog;
-moz-border-right-colors: transparent ThreeDShadow -moz-Dialog;
-moz-border-bottom-colors: transparent ThreeDShadow -moz-Dialog;
-moz-border-left-colors: transparent ThreeDShadow -moz-Dialog;
color: GrayText;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box > html|*.textbox-input {
margin: 0px !important;
border: none !important;
padding: 0px !important;
background-color: inherit;
color: inherit;
font: inherit;
}
/* Hide the drop marker and the popup. */
#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker {
display: none;
}
#editBMPanel_namePicker[droppable="false"] > menupopup {
display: none;
}
/* Hide the value column of the tag autocomplete popup /* Hide the value column of the tag autocomplete popup
* leaving only the comment column visible. This is * leaving only the comment column visible. This is
* so that only the tag being edited is shown in the * so that only the tag being edited is shown in the

View File

@ -82,35 +82,6 @@
margin-bottom: 2px; margin-bottom: 2px;
} }
/**** name picker ****/
/* Make the microsummary picker look like a regular textbox instead of
* an editable menulist when no microsummaries are available.
*/
#editBMPanel_namePicker[droppable="false"] {
/* These rules come from the textbox element in textbox.css. */
-moz-appearance: textfield; /* Normal editable menulists set this to "menulist". */
cursor: text;
border: 2px solid;
-moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
-moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
-moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
padding: 2px 2px 3px;
-moz-padding-start: 4px;
background-color: -moz-Field;
color: -moz-FieldText;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
padding: 0;
}
#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker,
#editBMPanel_namePicker[droppable="false"] > menupopup {
display: none;
}
/* Hide the value column of the tag autocomplete popup /* Hide the value column of the tag autocomplete popup
* leaving only the comment column visible. This is * leaving only the comment column visible. This is
* so that only the tag being edited is shown in the * so that only the tag being edited is shown in the

View File

@ -145,7 +145,6 @@ MOZ_TOOLKIT_SEARCH = @MOZ_TOOLKIT_SEARCH@
MOZ_PLACES = @MOZ_PLACES@ MOZ_PLACES = @MOZ_PLACES@
MOZ_STORAGE = @MOZ_STORAGE@ MOZ_STORAGE = @MOZ_STORAGE@
MOZ_SAFE_BROWSING = @MOZ_SAFE_BROWSING@ MOZ_SAFE_BROWSING = @MOZ_SAFE_BROWSING@
MOZ_FASTSTART = @MOZ_FASTSTART@
MOZ_URL_CLASSIFIER = @MOZ_URL_CLASSIFIER@ MOZ_URL_CLASSIFIER = @MOZ_URL_CLASSIFIER@
MOZ_ZIPWRITER = @MOZ_ZIPWRITER@ MOZ_ZIPWRITER = @MOZ_ZIPWRITER@
MOZ_MORK = @MOZ_MORK@ MOZ_MORK = @MOZ_MORK@

View File

@ -91,17 +91,20 @@ VPATH += $(LIBXUL_SDK)/lib
endif endif
# EXPAND_LIBNAME - $(call EXPAND_LIBNAME,foo) # EXPAND_LIBNAME - $(call EXPAND_LIBNAME,foo)
# expands to foo.lib on platforms with import libs and -lfoo otherwise # expands to $(LIB_PREFIX)foo.$(LIB_SUFFIX) or -lfoo, depending on linker
# arguments syntax. Should only be used for system libraries
# EXPAND_LIBNAME_PATH - $(call EXPAND_LIBNAME_PATH,foo,dir) # EXPAND_LIBNAME_PATH - $(call EXPAND_LIBNAME_PATH,foo,dir)
# expands to dir/foo.lib on platforms with import libs and # expands to dir/$(LIB_PREFIX)foo.$(LIB_SUFFIX)
# -Ldir -lfoo otherwise
# EXPAND_MOZLIBNAME - $(call EXPAND_MOZLIBNAME,foo) # EXPAND_MOZLIBNAME - $(call EXPAND_MOZLIBNAME,foo)
# expands to $(DIST)/lib/foo.lib on platforms with import libs and # expands to $(DIST)/lib/$(LIB_PREFIX)foo.$(LIB_SUFFIX)
# -lfoo otherwise
ifdef GNU_CC
EXPAND_LIBNAME = $(addprefix -l,$(1))
else
EXPAND_LIBNAME = $(foreach lib,$(1),$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) EXPAND_LIBNAME = $(foreach lib,$(1),$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
endif
EXPAND_LIBNAME_PATH = $(foreach lib,$(1),$(2)/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) EXPAND_LIBNAME_PATH = $(foreach lib,$(1),$(2)/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
EXPAND_MOZLIBNAME = $(foreach lib,$(1),$(DIST)/lib/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX)) EXPAND_MOZLIBNAME = $(foreach lib,$(1),$(DIST)/lib/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))

View File

@ -2188,9 +2188,9 @@ ia64*-hpux*)
esac esac
# If we're building with --enable-profiling, we need a frame pointer. # If we're building with --enable-profiling, we need a frame pointer.
if test -z "$MOZ_PROFILING"; then if test -z "$MOZ_PROFILING"; then
MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK" MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
else else
MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK" MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
fi fi
MOZ_DEBUG_FLAGS="-g" MOZ_DEBUG_FLAGS="-g"
fi fi
@ -3178,7 +3178,7 @@ dnl Checks for header files.
dnl ======================================================== dnl ========================================================
AC_HEADER_DIRENT AC_HEADER_DIRENT
case "$target_os" in case "$target_os" in
freebsd*) freebsd*|openbsd*)
# for stuff like -lXshm # for stuff like -lXshm
CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
;; ;;
@ -3344,11 +3344,6 @@ else
dnl ======================================================== dnl ========================================================
AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,, AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
$XLIBS $XEXT_LIBS) $XLIBS $XEXT_LIBS)
MOZ_CHECK_HEADER(X11/extensions/XShm.h)
if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
test -n "$_HAVE_XSHM_XEXT"; then
AC_DEFINE(HAVE_XSHM)
fi
dnl ======================================================== dnl ========================================================
dnl = Check for Xss dnl = Check for Xss
@ -4802,7 +4797,6 @@ MOZ_PSM=1
MOZ_RDF=1 MOZ_RDF=1
MOZ_REFLOW_PERF= MOZ_REFLOW_PERF=
MOZ_SAFE_BROWSING= MOZ_SAFE_BROWSING=
MOZ_FASTSTART=
MOZ_HELP_VIEWER= MOZ_HELP_VIEWER=
MOZ_SPELLCHECK=1 MOZ_SPELLCHECK=1
MOZ_SPLASHSCREEN= MOZ_SPLASHSCREEN=
@ -6771,18 +6765,6 @@ if test -n "$MOZ_SAFE_BROWSING"; then
fi fi
AC_SUBST(MOZ_SAFE_BROWSING) AC_SUBST(MOZ_SAFE_BROWSING)
dnl ========================================================
dnl = Enable faststart component
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(faststart,
[ --enable-faststart Enable the faststart component],
MOZ_FASTSTART=1,
MOZ_FASTSTART= )
if test -n "$MOZ_FASTSTART"; then
AC_DEFINE(MOZ_FASTSTART)
fi
AC_SUBST(MOZ_FASTSTART)
dnl ======================================================== dnl ========================================================
dnl = Enable url-classifier dnl = Enable url-classifier
dnl ======================================================== dnl ========================================================
@ -9041,6 +9023,7 @@ if test "$MOZ_X11"; then
#include <stdlib.h> #include <stdlib.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Intrinsic.h> #include <X11/Intrinsic.h>
#include <X11/extensions/XShm.h>
], ],
[ [
Display *dpy = 0; Display *dpy = 0;

Some files were not shown because too many files have changed in this diff Show More