Merge b2ginbound to central, a=merge

This commit is contained in:
Wes Kocher 2015-10-20 14:59:07 -07:00
commit eaf328ceb9
71 changed files with 1486 additions and 155 deletions

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>

View File

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0c28789b9957913be975eb002a22323f93585d4c"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

View File

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>

View File

@ -1,9 +1,9 @@
{
"git": {
"git_revision": "3491a49da4d4ce45b8a682e95d0ce68892c2b8ea",
"git_revision": "11eb5d4cb2675d359d277ae17772bc75f7ccedbc",
"remote": "https://git.mozilla.org/releases/gaia.git",
"branch": ""
},
"revision": "6458b8861154bf7e28971ce85d49e404ac96da29",
"revision": "6575311e4b9daab959d80f17cf77bea4c91660a6",
"repo_path": "integration/gaia-central"
}

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>

View File

@ -18,7 +18,7 @@
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0c28789b9957913be975eb002a22323f93585d4c"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="3491a49da4d4ce45b8a682e95d0ce68892c2b8ea"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="11eb5d4cb2675d359d277ae17772bc75f7ccedbc"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>

View File

@ -800,6 +800,18 @@
@RESPATH@/res/table-remove-row-active.gif
@RESPATH@/res/table-remove-row-hover.gif
@RESPATH@/res/table-remove-row.gif
@RESPATH@/res/accessiblecaret.png
@RESPATH@/res/accessiblecaret@1.5x.png
@RESPATH@/res/accessiblecaret@2.25x.png
@RESPATH@/res/accessiblecaret@2x.png
@RESPATH@/res/accessiblecaret_tilt_left.png
@RESPATH@/res/accessiblecaret_tilt_left@1.5x.png
@RESPATH@/res/accessiblecaret_tilt_left@2.25x.png
@RESPATH@/res/accessiblecaret_tilt_left@2x.png
@RESPATH@/res/accessiblecaret_tilt_right.png
@RESPATH@/res/accessiblecaret_tilt_right@1.5x.png
@RESPATH@/res/accessiblecaret_tilt_right@2.25x.png
@RESPATH@/res/accessiblecaret_tilt_right@2x.png
@RESPATH@/res/text_caret.png
@RESPATH@/res/text_caret@1.5x.png
@RESPATH@/res/text_caret@2.25x.png

View File

@ -749,6 +749,18 @@
@RESPATH@/res/table-remove-row-active.gif
@RESPATH@/res/table-remove-row-hover.gif
@RESPATH@/res/table-remove-row.gif
@RESPATH@/res/accessiblecaret.png
@RESPATH@/res/accessiblecaret@1.5x.png
@RESPATH@/res/accessiblecaret@2.25x.png
@RESPATH@/res/accessiblecaret@2x.png
@RESPATH@/res/accessiblecaret_tilt_left.png
@RESPATH@/res/accessiblecaret_tilt_left@1.5x.png
@RESPATH@/res/accessiblecaret_tilt_left@2.25x.png
@RESPATH@/res/accessiblecaret_tilt_left@2x.png
@RESPATH@/res/accessiblecaret_tilt_right.png
@RESPATH@/res/accessiblecaret_tilt_right@1.5x.png
@RESPATH@/res/accessiblecaret_tilt_right@2.25x.png
@RESPATH@/res/accessiblecaret_tilt_right@2x.png
@RESPATH@/res/text_caret.png
@RESPATH@/res/text_caret@1.5x.png
@RESPATH@/res/text_caret@2.25x.png

View File

@ -99,13 +99,7 @@ if test -n "$USE_ICU"; then
MOZ_ICU_DBG_SUFFIX=d
fi
;;
Android)
if test -z "$gonkdir"; then
AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
fi
ICU_LIB_NAMES="icui18n icuuc icudata"
;;
Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|GNU/kFreeBSD|SunOS)
Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|GNU/kFreeBSD|SunOS|Android)
ICU_LIB_NAMES="icui18n icuuc icudata"
;;
*)
@ -279,6 +273,8 @@ if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
if test -n "$gonkdir"; then
ICU_CXXFLAGS="-I$gonkdir/abi/cpp/include $ICU_CXXFLAGS"
elif test "$OS_TARGET" = Android -a "$MOZ_ANDROID_CXX_STL" = mozstlport; then
ICU_CXXFLAGS="-I$_topsrcdir/build/gabi++/include $ICU_CXXFLAGS"
fi
if test -z "$MOZ_SHARED_ICU"; then

55
build/gabi++/Android.mk Normal file
View File

@ -0,0 +1,55 @@
LOCAL_PATH:= $(call my-dir)
libgabi++_cflags := \
-I$(LOCAL_PATH)/include
libgabi++_common_src_files := \
src/array_type_info.cc \
src/class_type_info.cc \
src/delete.cc \
src/dynamic_cast.cc \
src/enum_type_info.cc \
src/function_type_info.cc \
src/new.cc \
src/pbase_type_info.cc \
src/pointer_type_info.cc \
src/pointer_to_member_type_info.cc \
src/si_class_type_info.cc \
src/type_info.cc \
src/vmi_class_type_info.cc
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_CPP_EXTENSION := .cc
LOCAL_SRC_FILES:= $(libgabi++_common_src_files)
LOCAL_MODULE:= libgabi++
LOCAL_CFLAGS := $(libgabi++_cflags)
LOCAL_RTTI_FLAG := -frtti
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_CPP_EXTENSION := .cc
LOCAL_SRC_FILES:= $(libgabi++_common_src_files)
LOCAL_MODULE:= libgabi++
LOCAL_CFLAGS := $(libgabi++_cflags)
LOCAL_RTTI_FLAG := -frtti
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
include $(BUILD_STATIC_LIBRARY)

View File

@ -0,0 +1 @@
This copy of libgabi++ is from Android 5.0 source code on https://android.googlesource.com/platform/abi/cpp/. Tag is android-5.0.0_r1.

View File

@ -0,0 +1,183 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
#ifndef __GABIXX_CXXABI_H__
#define __GABIXX_CXXABI_H__
#include <typeinfo>
namespace __cxxabiv1
{
extern "C" void __cxa_pure_virtual();
// Derived types of type_info below are based on 2.9.5 of C++ ABI.
// Typeinfo for fundamental types.
class __fundamental_type_info : public std::type_info
{
public:
~__fundamental_type_info();
};
// Typeinfo for array types.
class __array_type_info : public std::type_info
{
public:
~__array_type_info();
};
// Typeinfo for function types.
class __function_type_info : public std::type_info
{
public:
~__function_type_info();
};
// Typeinfo for enum types.
class __enum_type_info : public std::type_info
{
public:
~__enum_type_info();
};
// Typeinfo for classes with no bases.
class __class_type_info : public std::type_info
{
public:
~__class_type_info();
enum class_type_info_code
{
CLASS_TYPE_INFO_CODE,
SI_CLASS_TYPE_INFO_CODE,
VMI_CLASS_TYPE_INFO_CODE
};
virtual class_type_info_code
code() const { return CLASS_TYPE_INFO_CODE; }
};
// Typeinfo for classes containing only a single, public, non-virtual base at
// offset zero.
class __si_class_type_info : public __class_type_info
{
public:
~__si_class_type_info();
const __class_type_info *__base_type;
virtual __class_type_info::class_type_info_code
code() const { return SI_CLASS_TYPE_INFO_CODE; }
};
struct __base_class_type_info
{
public:
const __class_type_info *__base_type;
// All but the lower __offset_shift bits of __offset_flags are a signed
// offset. For a non-virtual base, this is the offset in the object of the
// base subobject. For a virtual base, this is the offset in the virtual
// table of the virtual base offset for the virtual base referenced
// (negative).
long __offset_flags;
enum __offset_flags_masks
{
__virtual_mask = 0x1,
__public_mask = 0x2,
__offset_shift = 8
};
bool inline
is_virtual() const { return (__offset_flags & __virtual_mask) != 0; }
bool inline
is_public() const { return (__offset_flags & __public_mask) != 0; }
// FIXME: Right-shift of signed integer is implementation dependent.
long inline
offset() const { return __offset_flags >> __offset_shift; }
long inline
flags() const { return __offset_flags & ((1L << __offset_shift) - 1); }
};
// Typeinfo for classes with bases that do not satisfy the
// __si_class_type_info constraints.
class __vmi_class_type_info : public __class_type_info
{
public:
~__vmi_class_type_info();
unsigned int __flags;
unsigned int __base_count;
__base_class_type_info __base_info[1];
enum __flags_masks
{
__non_diamond_repeat_mask = 0x1,
__diamond_shaped_mask = 0x2
};
virtual __class_type_info::class_type_info_code
code() const { return VMI_CLASS_TYPE_INFO_CODE; }
};
class __pbase_type_info : public std::type_info
{
public:
~__pbase_type_info();
unsigned int __flags;
const std::type_info *__pointee;
enum __masks
{
__const_mask = 0x1,
__volatile_mask = 0x2,
__restrict_mask = 0x4,
__incomplete_mask = 0x8,
__incomplete_class_mask = 0x10
};
};
class __pointer_type_info : public __pbase_type_info
{
public:
~__pointer_type_info();
};
class __pointer_to_member_type_info : public __pbase_type_info
{
public:
~__pointer_to_member_type_info();
};
}
namespace abi = __cxxabiv1;
#endif /* defined(__GABIXX_CXXABI_H__) */

56
build/gabi++/include/new Normal file
View File

@ -0,0 +1,56 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// new: Dynamic storage management.
#ifndef __GABIXX_NEW__
#define __GABIXX_NEW__
#include <cstddef>
namespace std
{
struct nothrow_t {};
extern const nothrow_t nothrow;
typedef void (*new_handler)();
}
// FIXME: Need to handle exceptions.
void* operator new(std::size_t size) throw(/*std::bad_alloc*/);
void* operator new(std::size_t size, const std::nothrow_t&) throw();
void operator delete(void* ptr) throw();
void operator delete(void*, const std::nothrow_t&) throw();
void* operator new[](std::size_t size) throw(/*std::bad_alloc*/);
void* operator new[](std::size_t size, const std::nothrow_t&) throw();
void operator delete[](void* ptr) throw();
void operator delete[](void* const, std::nothrow_t&) throw();
void* operator new(std::size_t size, void* ptr) throw();
void* operator new[](std::size_t size, void* ptr) throw();
void operator delete(void* ptr, void*) throw();
void operator delete[](void* ptr, void*) throw();
#endif // __GABIXX_NEW__

View File

@ -0,0 +1,76 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// typeinfo: RTTI support header.
//
// References:
// Itanium C++ ABI at http://www.codesourcery.com/public/cxx-abi/abi.html.
// IHI0041A C++ Application Binary Interface for the ARM architecture.
// Linux Standard Base C++ Specification for S390X 4.1.
//
#ifndef __GABIXX_TYPEINFO__
#define __GABIXX_TYPEINFO__
namespace std
{
// Defintion of type_info based on example in C++ ABI section 2.9.3
class type_info
{
public:
virtual
~type_info();
// Whether two type_infos corresponds to the same types.
bool
operator==(const type_info &ti) const;
// Whether two type_infos corresponds to the different types.
bool
operator!=(const type_info &ti) const;
bool
before(const type_info &ti) const;
// Return name of type.
const char*
name() const { return __type_name; }
private:
// Assignment of type_info is not allowed.
type_info (const type_info& rhs);
type_info&
operator=(const type_info& rhs);
// Mangled name of type.
const char *__type_name;
};
} // namespace std
#endif // _GABIXX_TYPEINFO_

36
build/gabi++/moz.build Normal file
View File

@ -0,0 +1,36 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
Library('gabi++')
SOURCES += [
'src/array_type_info.cc',
'src/class_type_info.cc',
'src/delete.cc',
'src/dynamic_cast.cc',
'src/enum_type_info.cc',
'src/function_type_info.cc',
'src/fundamental_type_info.cc',
'src/new.cc',
'src/pbase_type_info.cc',
'src/pointer_to_member_type_info.cc',
'src/pointer_type_info.cc',
'src/si_class_type_info.cc',
'src/type_info.cc',
'src/vmi_class_type_info.cc',
]
LOCAL_INCLUDES += [
'include'
]
DISABLE_STL_WRAPPING = True
NO_VISIBILITY_FLAGS = True
CXXFLAGS += [
'-fexceptions',
'-frtti'
]

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// fundamental_type_info.cc: Methods for __fundamental_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__fundamental_type_info::~__fundamental_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// class_type_info.cc: Methods for __class_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__class_type_info::~__class_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,38 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// delete.cc: delete operator
#include <stdlib.h>
#include <new>
void
operator delete(void* ptr) throw()
{
if (ptr)
free(ptr);
}

View File

@ -0,0 +1,356 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// dynamic_cast.cc: RTTI support.
//
// References:
// Itanium C++ ABI at http://www.codesourcery.com/public/cxx-abi/abi.html
// IHI0041A C++ Application Binary Interface for the ARM architecture.
//
#include <cxxabi.h>
#include <cstddef>
#include <cassert>
namespace
{
// Adjust a pointer by an offset.
const void*
adjust_pointer(const void* p, std::ptrdiff_t off)
{
// FIXME: should we align pointer after adjustment?
const char *cp = reinterpret_cast<const char*>(p) + off;
return reinterpret_cast<const void*>(cp);
}
// Return the vtable pointer of a polymorphic object pointed by p.
inline const void*
get_vtable(const void* p)
{
return *reinterpret_cast<void*const*>(p);
}
// Return a pointer to a __class_type_info in a vtable.
inline const abi::__class_type_info*
get_class_type_info(const void* vtable)
{
const void* type_info_ptr = adjust_pointer(vtable, -sizeof(void*));
return *reinterpret_cast<abi::__class_type_info*const*>(type_info_ptr);
}
// Return offset to object in a vtable.
inline std::ptrdiff_t
get_offset_to_top(const void* vtable)
{
const void* type_info_ptr_address = adjust_pointer(vtable, -sizeof(void*));
const void* offset_to_top_address =
adjust_pointer(type_info_ptr_address, -sizeof(std::ptrdiff_t));
return *reinterpret_cast<const std::ptrdiff_t*>(offset_to_top_address);
}
// Return the virtual pointer to the most derived object of referred by a
// pointer p.
const void*
get_most_derived_object(const void* p)
{
const void* vtable = get_vtable(p);
std::ptrdiff_t offset_to_top = get_offset_to_top(vtable);
return adjust_pointer(p, offset_to_top);
}
// We assume that -1 cannot be a valid pointer to object.
const void * const ambiguous_object =
reinterpret_cast<const void*>(-1);
// Return a pointer to the subobject described by base_info.
const void*
get_subobject(const void* object,
const void* vtable,
const abi::__base_class_type_info* base_info)
{
long offset = base_info->offset();
if (base_info->is_virtual())
{
const std::ptrdiff_t* virtual_base_offset_address =
static_cast<const std::ptrdiff_t*> (adjust_pointer(vtable, offset));
offset = *virtual_base_offset_address;
}
return adjust_pointer(object, offset);
}
// Helper of __dyanmic_cast to walk the type tree of an object.
const void *
walk_object(const void *object,
const abi::__class_type_info *type,
const void *match_object,
const abi::__class_type_info *match_type)
{
if (*type == *match_type)
return (match_object == NULL || object == match_object) ? object : NULL;
switch(type->code())
{
case abi::__class_type_info::CLASS_TYPE_INFO_CODE:
// This isn't not the class you're looking for.
return NULL;
case abi::__class_type_info::SI_CLASS_TYPE_INFO_CODE:
// derived type has a single public base at offset 0.
{
const abi::__si_class_type_info* ti =
static_cast<const abi::__si_class_type_info*>(type);
return walk_object(object, ti->__base_type, match_object,
match_type);
}
case abi::__class_type_info::VMI_CLASS_TYPE_INFO_CODE:
{
const void* vtable = get_vtable(object);
const abi::__vmi_class_type_info* ti =
static_cast<const abi::__vmi_class_type_info*>(type);
// Look at all direct bases.
const void* result = NULL;
for (unsigned i = 0; i < ti->__base_count; ++i)
{
if (!ti->__base_info[i].is_public())
continue;
const void *subobject =
get_subobject(object, vtable, &ti->__base_info[i]);
const void* walk_subobject_result =
walk_object(subobject, ti->__base_info[i].__base_type,
match_object, match_type);
if (walk_subobject_result == ambiguous_object)
return ambiguous_object;
else if (walk_subobject_result != NULL)
{
if (result == NULL)
{
result = walk_subobject_result;
}
else if (result != walk_subobject_result)
return ambiguous_object;
}
}
return result;
}
default:
assert(0);
}
return NULL;
}
// Bookkeeping structure for derived-to-base cast in the general case.
struct cast_context
{
public:
const void* object;
const abi::__class_type_info *src_type;
const abi::__class_type_info *dst_type;
std::ptrdiff_t src2dst_offset;
const void* dst_object;
const void* result;
cast_context(const void* obj, const abi::__class_type_info *src,
const abi::__class_type_info *dst, std::ptrdiff_t offset)
: object(obj), src_type(src), dst_type(dst), src2dst_offset(offset),
dst_object(NULL), result(NULL)
{ }
};
// based-to-derive cast in the general case.
void
base_to_derived_cast(const void *object,
const abi::__class_type_info *type,
cast_context* context)
{
const void* saved_dst_object = context->dst_object;
bool is_dst_type = *type == *context->dst_type;
if (is_dst_type)
context->dst_object = object;
if (object == context->object
&& context->dst_object != NULL
&& *type == *context->src_type)
{
if (context->result == NULL)
context->result = context->dst_object;
else if (context->result != context->dst_object)
context->result = ambiguous_object;
context->dst_object = saved_dst_object;
return;
}
switch(type->code())
{
case abi::__class_type_info::CLASS_TYPE_INFO_CODE:
// This isn't not the class you're looking for.
break;
case abi::__class_type_info::SI_CLASS_TYPE_INFO_CODE:
// derived type has a single public base at offset 0.
{
const abi::__si_class_type_info* ti =
static_cast<const abi::__si_class_type_info*>(type);
base_to_derived_cast(object, ti->__base_type, context);
break;
}
case abi::__class_type_info::VMI_CLASS_TYPE_INFO_CODE:
{
const void* vtable = get_vtable(object);
const abi::__vmi_class_type_info* ti =
static_cast<const abi::__vmi_class_type_info*>(type);
// Look at all direct bases.
for (unsigned i = 0; i < ti->__base_count; ++i)
{
if (!ti->__base_info[i].is_public())
continue;
const void *subobject =
get_subobject(object, vtable, &ti->__base_info[i]);
base_to_derived_cast(subobject, ti->__base_info[i].__base_type,
context);
// FIXME: Use flags in base_info to optimize search.
if (context->result == ambiguous_object)
break;
}
break;
}
default:
assert(0);
}
context->dst_object = saved_dst_object;
}
} // namespace
namespace __cxxabiv1
{
#define DYNAMIC_CAST_NO_HINT -1
#define DYNAMIC_CAST_NOT_PUBLIC_BASE -2
#define DYNAMIC_CAST_MULTIPLE_PUBLIC_NONVIRTUAL_BASE -3
/* v: source address to be adjusted; nonnull, and since the
* source object is polymorphic, *(void**)v is a virtual pointer.
* src: static type of the source object.
* dst: destination type (the "T" in "dynamic_cast<T>(v)").
* src2dst_offset: a static hint about the location of the
* source subobject with respect to the complete object;
* special negative values are:
* -1: no hint
* -2: src is not a public base of dst
* -3: src is a multiple public base type but never a
* virtual base type
* otherwise, the src type is a unique public nonvirtual
* base type of dst at offset src2dst_offset from the
* origin of dst.
*/
extern "C" void*
__dynamic_cast (const void *v,
const abi::__class_type_info *src,
const abi::__class_type_info *dst,
std::ptrdiff_t src2dst_offset)
{
const void* most_derived_object = get_most_derived_object(v);
const void* vtable = get_vtable(most_derived_object);
const abi::__class_type_info* most_derived_class_type_info =
get_class_type_info(vtable);
// If T is not a public base type of the most derived class referred
// by v, the cast always fails.
void* t_object =
const_cast<void*>(walk_object(most_derived_object,
most_derived_class_type_info, NULL, dst));
if (t_object == NULL)
return NULL;
// C++ ABI 2.9.7 The dynamic_cast Algorithm:
//
// If, in the most derived object pointed (referred) to by v, v points
// (refers) to a public base class subobject of a T object [note: this can
// be checked at compile time], and if only one object of type T is derived
// from the subobject pointed (referred) to by v, the result is a pointer
// (an lvalue referring) to that T object.
// We knew that src is not a public base, so base-to-derived cast
// is not possible. This works even if there are multiple subobjects
// of type T in the most derived object.
if (src2dst_offset != DYNAMIC_CAST_NOT_PUBLIC_BASE)
{
// If it is known that v points to a public base class subobject
// of a T object, simply adjust the pointer by the offset.
if (t_object != ambiguous_object && src2dst_offset >= 0)
return const_cast<void*>(adjust_pointer(v, -src2dst_offset));
// If there is only one T type subobject, we only need to look at
// there. Otherwise, look for the subobject referred by v in the
// most derived object.
cast_context context(v, src, dst, src2dst_offset);
if (t_object != ambiguous_object)
base_to_derived_cast(t_object, dst, &context);
else
base_to_derived_cast(most_derived_object,
most_derived_class_type_info, &context);
if (context.result != NULL && context.result != ambiguous_object)
return const_cast<void*>(context.result);
}
// C++ ABI 2.9.7 The dynamic_cast Algorithm:
//
// Otherwise, if v points (refers) to a public base class subobject of the
// most derived object, and the type of the most derived object has an
// unambiguous public base class of type T, the result is a pointer (an
// lvalue referring) to the T subobject of the most derived object.
// Otherwise, the run-time check fails.
// Check to see if T is a unambiguous public base class.
if (t_object == ambiguous_object)
return NULL;
// See if v refers to a public base class subobject.
const void* v_object =
walk_object(most_derived_object, most_derived_class_type_info, v, src);
return v_object == v ? t_object : NULL;
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// enum_type_info.cc: Methods for __enum_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__enum_type_info::~__enum_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// function_type_info.cc: Methods for __function_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__function_type_info::~__function_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// array_type_info.cc: Methods for __array_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__array_type_info::~__array_type_info()
{
}
} // namespace __cxxabiv1

42
build/gabi++/src/new.cc Normal file
View File

@ -0,0 +1,42 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
#include <stdlib.h>
#include <new>
// FIXME: need to handle exceptions
void*
operator new(std::size_t size) throw (/*std::bad_alloc*/)
{
void* ptr = malloc(size);
#if 0
if (ptr == NULL)
throw std::bad_alloc();
#endif
return ptr;
}

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// pbase_type_info.cc: Methods for __pbase_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__pbase_type_info::~__pbase_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// pointer_to_member_type_info.cc: Methods for __pointer_to_member_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__pointer_to_member_type_info::~__pointer_to_member_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// pointer_type_info.cc: Methods for __pointer_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__pointer_type_info::~__pointer_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// si_class_type_info.cc: Methods for __si_class_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__si_class_type_info::~__si_class_type_info()
{
}
} // namespace __cxxabiv1

View File

@ -0,0 +1,75 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// type_info.cc: Methods for std::type_info.
//
#include <cxxabi.h>
#ifdef __ARM_EABI__
// ARM EABI requires string comprison for mangled type names for type_info
// equality.
#include <string.h>
#endif
#include <typeinfo>
namespace std
{
type_info::~type_info()
{
}
bool
type_info::operator==(const type_info& rhs) const
{
#ifdef __ARM_EABI__
// IHI0041A CPPABI 3.2.5.6. Because of weak linkage and share libraries,
// we perform string comparison.
return strcmp(this->__type_name, rhs.__type_name) == 0;
#else
return this == &rhs;
#endif
}
bool
type_info::operator!=(const type_info& rhs) const
{
return !this->operator==(rhs);
}
bool
type_info::before(const type_info& rhs) const
{
#ifdef __ARM_EABI__
// IHI0041A CPPABI 3.2.5.6. Because of weak linkage and share libraries,
// we perform string comparison.
return strcmp(this->__type_name, rhs.__type_name) < 0;
#else
return this < &rhs;
#endif
}
} // end namespace std

View File

@ -0,0 +1,37 @@
// Copyright (C) 2011 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the project nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// vmi_class_type_info.cc: Methods for __vmi_class_type_info.
#include <cxxabi.h>
namespace __cxxabiv1
{
__vmi_class_type_info::~__vmi_class_type_info()
{
}
} // namespace __cxxabiv1

8
build/gabi++/use_rtti.mk Normal file
View File

@ -0,0 +1,8 @@
# To use RTTI, "include abi/cpp/use_rtti.mk" in your target.
LOCAL_C_INCLUDES := \
abi/cpp/include \
$(LOCAL_C_INCLUDES)
LOCAL_RTTI_FLAG := -frtti
LOCAL_SHARED_LIBRARIES += libgabi++

View File

@ -17,6 +17,8 @@ else:
if CONFIG['OS_TARGET'] == 'Android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport':
DIRS += ['stlport']
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android' and CONFIG['ENABLE_INTL_API']:
DIRS += ['gabi++']
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
DIRS += ['annotationProcessors']

View File

@ -21,3 +21,7 @@ else:
OS_LIBS += [
'gabi++',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport':
USE_LIBS += [
'gabi++'
]

View File

@ -9110,12 +9110,10 @@ dnl ========================================================
dnl ICU Support
dnl ========================================================
# Internationalization isn't built or exposed by default in non-desktop
# builds. Bugs to enable:
#
# Android: bug 864843
# Internationalization is not built or exposed on Fennec.
# See Bug 1215256
if test "$MOZ_WIDGET_TOOLKIT" = "android"; then
if test "$MOZ_BUILD_APP" = "mobile/android"; then
_INTL_API=no
else
_INTL_API=yes

View File

@ -91,7 +91,7 @@ BluetoothHfpManager::OnGetServiceChannel(const nsAString& aDeviceAddress,
}
void
BluetoothHfpManager::OnUpdateSdpRecords(const nsAString& aDeviceAddress)
BluetoothHfpManager::OnUpdateSdpRecords(const BluetoothAddress& aDeviceAddress)
{
MOZ_ASSERT(false);
}

View File

@ -240,12 +240,6 @@ TelephonyListener::EnumerateCallState(nsITelephonyCallInfo* aInfo)
return HandleCallInfo(aInfo, false);
}
NS_IMETHODIMP
TelephonyListener::ConferenceCallStateChanged(uint16_t aCallState)
{
return NS_OK;
}
NS_IMETHODIMP
TelephonyListener::EnumerateCallStateComplete()
{

View File

@ -40,7 +40,7 @@ const TYPED_ARRAY_THINGS = new Set([
]);
this.SETTINGSDB_NAME = "settings";
this.SETTINGSDB_VERSION = 5;
this.SETTINGSDB_VERSION = 6;
this.SETTINGSSTORE_NAME = "settings";
Cu.import("resource://gre/modules/IndexedDBHelper.jsm");

View File

@ -344,7 +344,7 @@ Telephony::HandleCallInfo(nsITelephonyCallInfo* aInfo)
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
}
// Update an existing call
call->UpdateEmergency(isEmergency);
@ -723,6 +723,7 @@ Telephony::WindowAudioCaptureChanged()
NS_IMETHODIMP
Telephony::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** aAllInfo)
{
// Update call state
nsresult rv;
for (uint32_t i = 0; i < aLength; ++i) {
rv = HandleCallInfo(aAllInfo[i]);
@ -731,6 +732,9 @@ Telephony::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** aAllInfo)
}
}
// Update conference state
mGroup->ChangeState();
rv = HandleAudioAgentState();
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
@ -744,17 +748,6 @@ Telephony::EnumerateCallState(nsITelephonyCallInfo* aInfo)
return HandleCallInfo(aInfo);
}
NS_IMETHODIMP
Telephony::ConferenceCallStateChanged(uint16_t aCallState)
{
// The current design of Telephony Stack gaurantees that the calls within a
// call group are updated before this method being called, so we can let a
// call update its state by its own, and we can discard |aCallState| here.
// Anyway, this method is going to be deprecated in Bug 1155072.
mGroup->ChangeState();
return NS_OK;
}
NS_IMETHODIMP
Telephony::EnumerateCallStateComplete()
{

View File

@ -369,7 +369,6 @@ function TelephonyService() {
this._isDialing = false;
this._cachedDialRequest = null;
this._currentCalls = {};
this._currentConferenceState = nsITelephonyService.CALL_STATE_UNKNOWN;
this._audioStates = [];
this._ussdSessions = [];
@ -2040,7 +2039,6 @@ TelephonyService.prototype = {
calls.push(call);
}
this._handleCallStateChanged(aClientId, calls);
this._handleConferenceCallStateChanged(nsITelephonyService.CALL_STATE_CONNECTED);
aCallback.notifySuccess();
});
@ -2084,7 +2082,6 @@ TelephonyService.prototype = {
parentCall.isSwitchable = true;
parentCall.isMergeable = true;
this._handleCallStateChanged(aClientId, [childCall, parentCall]);
this._handleConferenceCallStateChanged(nsITelephonyService.CALL_STATE_UNKNOWN);
},
// See 3gpp2, S.R0006-522-A v1.0. Table 4, XID 6S.
@ -2128,11 +2125,24 @@ TelephonyService.prototype = {
return;
}
let foreground = this._currentConferenceState == nsITelephonyService.CALL_STATE_CONNECTED;
this._sendToRilWorker(aClientId,
foreground ? "hangUpForeground" : "hangUpBackground",
null,
this._defaultCallbackHandler.bind(this, aCallback));
// Find a conference call, and send the corresponding request to RIL worker.
for (let index in this._currentCalls[aClientId]) {
let call = this._currentCalls[aClientId][index];
if (!call.isConference) {
continue;
}
let command = call.state === nsITelephonyService.CALL_STATE_CONNECTED ?
"hangUpForeground" : "hangUpBackground";
this._sendToRilWorker(aClientId, command, null,
this._defaultCallbackHandler.bind(this, aCallback));
return;
}
// There is no conference call.
if (DEBUG) debug("hangUpConference: " +
"No conference call in modem[" + aClientId + "].");
aCallback.notifyError(RIL.GECKO_ERROR_GENERIC_FAILURE);
},
_switchConference: function(aClientId, aCallback) {
@ -2354,12 +2364,6 @@ TelephonyService.prototype = {
this._handleCallStateChanged(aClientId, [...changedCalls]);
// Should handle conferenceCallStateChange after callStateChanged and
// callDisconnected.
if (newConferenceState != this._currentConferenceState) {
this._handleConferenceCallStateChanged(newConferenceState);
}
this._updateAudioState(aClientId);
// Handle cached dial request.
@ -2439,12 +2443,6 @@ TelephonyService.prototype = {
[aClientId, callIndex, notification]);
},
_handleConferenceCallStateChanged: function(aState) {
if (DEBUG) debug("handleConferenceCallStateChanged: " + aState);
this._currentConferenceState = aState;
this._notifyAllListeners("conferenceCallStateChanged", [aState]);
},
notifyUssdReceived: function(aClientId, aMessage, aSessionEnded) {
if (DEBUG) {
debug("notifyUssdReceived for " + aClientId + ": " +

View File

@ -97,7 +97,6 @@ this.TelephonyUtils = {
resolve();
}
},
conferenceCallStateChanged: function() {},
supplementaryServiceNotification: function() {},
notifyError: function() {},
notifyCdmaCallWaiting: function() {},

View File

@ -129,8 +129,6 @@ child:
NotifyCdmaCallWaiting(uint32_t aClientId, IPCCdmaWaitingCallData aData);
NotifyConferenceCallStateChanged(uint16_t aCallState);
NotifyConferenceError(nsString aName, nsString aMessage);
NotifySupplementaryService(uint32_t aClientId, int32_t aCallIndex,

View File

@ -80,15 +80,6 @@ TelephonyChild::RecvNotifyCdmaCallWaiting(const uint32_t& aClientId,
return true;
}
bool
TelephonyChild::RecvNotifyConferenceCallStateChanged(const uint16_t& aCallState)
{
MOZ_ASSERT(mService);
mService->ConferenceCallStateChanged(aCallState);
return true;
}
bool
TelephonyChild::RecvNotifyConferenceError(const nsString& aName,
const nsString& aMessage)

View File

@ -41,9 +41,6 @@ protected:
RecvNotifyCdmaCallWaiting(const uint32_t& aClientId,
const IPCCdmaWaitingCallData& aData) override;
virtual bool
RecvNotifyConferenceCallStateChanged(const uint16_t& aCallState) override;
virtual bool
RecvNotifyConferenceError(const nsString& aName,
const nsString& aMessage) override;

View File

@ -376,15 +376,6 @@ TelephonyIPCService::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** a
return NS_OK;
}
NS_IMETHODIMP
TelephonyIPCService::ConferenceCallStateChanged(uint16_t aCallState)
{
for (uint32_t i = 0; i < mListeners.Length(); i++) {
mListeners[i]->ConferenceCallStateChanged(aCallState);
}
return NS_OK;
}
NS_IMETHODIMP
TelephonyIPCService::EnumerateCallStateComplete()
{

View File

@ -286,15 +286,6 @@ TelephonyParent::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo** aAllI
return SendNotifyCallStateChanged(allInfo) ? NS_OK : NS_ERROR_FAILURE;
}
NS_IMETHODIMP
TelephonyParent::ConferenceCallStateChanged(uint16_t aCallState)
{
NS_ENSURE_TRUE(!mActorDestroyed, NS_ERROR_FAILURE);
return SendNotifyConferenceCallStateChanged(aCallState) ? NS_OK
: NS_ERROR_FAILURE;
}
NS_IMETHODIMP
TelephonyParent::EnumerateCallStateComplete()
{
@ -381,12 +372,6 @@ TelephonyRequestParent::CallStateChanged(uint32_t aLength, nsITelephonyCallInfo*
MOZ_CRASH("Not a TelephonyParent!");
}
NS_IMETHODIMP
TelephonyRequestParent::ConferenceCallStateChanged(uint16_t aCallState)
{
MOZ_CRASH("Not a TelephonyParent!");
}
NS_IMETHODIMP
TelephonyRequestParent::EnumerateCallStateComplete()
{

View File

@ -7,7 +7,7 @@
interface nsIMobileCallForwardingOptions;
interface nsITelephonyCallInfo;
[scriptable, uuid(80faf34e-286b-4487-bd55-135bd92668b9)]
[scriptable, uuid(baa9f5f3-5cab-40e0-81e9-ae0abd917907)]
interface nsITelephonyListener : nsISupports
{
/**
@ -29,17 +29,6 @@ interface nsITelephonyListener : nsISupports
void callStateChanged(in unsigned long length,
[array, size_is(length)] in nsITelephonyCallInfo allInfo);
/**
* Called when participants of a conference call have been updated, and the
* conference call state changes.
*
* @param callState
* Possible values are: nsITelephonyService::CALL_STATE_UNKNOWN,
* nsITelephonyService::CALL_STATE_HELD,
* nsITelephonyService::CALL_STATE_CONNECTED.
*/
void conferenceCallStateChanged(in unsigned short callState);
/**
* Notify when RIL receives supplementary service notification.
*

View File

@ -45,7 +45,6 @@ function waitForStateChanged(aPredicate) {
}
},
conferenceCallStateChanged: function() {},
supplementaryServiceNotification: function() {},
notifyError: function() {},
notifyCdmaCallWaiting: function() {},

View File

@ -27,6 +27,18 @@ UNIFIED_SOURCES += [
FINAL_LIBRARY = 'xul'
RESOURCE_FILES += [
'res/accessiblecaret.png',
'res/accessiblecaret@1.5x.png',
'res/accessiblecaret@2.25x.png',
'res/accessiblecaret@2x.png',
'res/accessiblecaret_tilt_left.png',
'res/accessiblecaret_tilt_left@1.5x.png',
'res/accessiblecaret_tilt_left@2.25x.png',
'res/accessiblecaret_tilt_left@2x.png',
'res/accessiblecaret_tilt_right.png',
'res/accessiblecaret_tilt_right@1.5x.png',
'res/accessiblecaret_tilt_right@2.25x.png',
'res/accessiblecaret_tilt_right@2x.png',
'res/EditorOverride.css',
'res/grabber.gif',
'res/table-add-column-after-active.gif',

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -314,7 +314,7 @@ RValueAllocation
RValueAllocation::read(CompactBufferReader& reader)
{
uint8_t mode = reader.readByte();
const Layout& layout = layoutFromMode(Mode(mode & MODE_MASK));
const Layout& layout = layoutFromMode(Mode(mode & MODE_BITS_MASK));
Payload arg1, arg2;
readPayload(reader, layout.type1, &mode, &arg1);

View File

@ -80,7 +80,7 @@ class RValueAllocation
// This mask represents the set of bits which can be used to encode a
// value in a snapshot. The mode is used to determine how to interpret
// the union of values and how to pack the value in memory.
MODE_MASK = 0x17f,
MODE_BITS_MASK = 0x17f,
INVALID = 0x100,
};
@ -294,7 +294,7 @@ class RValueAllocation
public:
Mode mode() const {
return Mode(mode_ & MODE_MASK);
return Mode(mode_ & MODE_BITS_MASK);
}
bool needSideEffect() const {
return mode_ & RECOVER_SIDE_EFFECT_MASK;

View File

@ -299,11 +299,17 @@ class CommonCaretsTestCase(object):
# draggable.
(caret3_x, caret3_y), (caret4_x, caret4_y) = sel.selection_carets_location()
# The following values are from ua.css.
caret_width = 44
caret_margin_left = -23
tilt_right_margin_left = 18
tilt_left_margin_left = -17
# The following values are from ua.css and all.js
if self.carets_tested_pref == 'selectioncaret.enabled':
caret_width = 44
caret_margin_left = -23
tilt_right_margin_left = 18
tilt_left_margin_left = -17
elif self.carets_tested_pref == 'layout.accessiblecaret.enabled':
caret_width = float(self.marionette.get_pref('layout.accessiblecaret.width'))
caret_margin_left = float(self.marionette.get_pref('layout.accessiblecaret.margin-left'))
tilt_right_margin_left = 0.41 * caret_width;
tilt_left_margin_left = -0.39 * caret_width;
left_caret_left_edge_x = caret3_x + caret_margin_left + tilt_left_margin_left
el.tap(left_caret_left_edge_x + 2, caret3_y)

View File

@ -343,16 +343,16 @@ div:-moz-native-anonymous.moz-accessiblecaret.no-bar > div.bar {
}
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
background-image: url("resource://gre/res/text_caret.png");
background-image: url("resource://gre/res/accessiblecaret.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
background-image: url("resource://gre/res/text_caret_tilt_left.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_left.png");
margin-left: -39%;
}
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
background-image: url("resource://gre/res/text_caret_tilt_right.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_right.png");
margin-left: 41%;
}
@ -362,43 +362,43 @@ div:-moz-native-anonymous.moz-accessiblecaret.none {
@media (min-resolution: 1.5dppx) {
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
background-image: url("resource://gre/res/text_caret@1.5x.png");
background-image: url("resource://gre/res/accessiblecaret@1.5x.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
background-image: url("resource://gre/res/text_caret_tilt_left@1.5x.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_left@1.5x.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
background-image: url("resource://gre/res/text_caret_tilt_right@1.5x.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_right@1.5x.png");
}
}
@media (min-resolution: 2dppx) {
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
background-image: url("resource://gre/res/text_caret@2x.png");
background-image: url("resource://gre/res/accessiblecaret@2x.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
background-image: url("resource://gre/res/text_caret_tilt_left@2x.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_left@2x.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
background-image: url("resource://gre/res/text_caret_tilt_right@2x.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_right@2x.png");
}
}
@media (min-resolution: 2.25dppx) {
div:-moz-native-anonymous.moz-accessiblecaret.normal > div.image {
background-image: url("resource://gre/res/text_caret@2.25x.png");
background-image: url("resource://gre/res/accessiblecaret@2.25x.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.left > div.image {
background-image: url("resource://gre/res/text_caret_tilt_left@2.25x.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_left@2.25x.png");
}
div:-moz-native-anonymous.moz-accessiblecaret.right > div.image {
background-image: url("resource://gre/res/text_caret_tilt_right@2.25x.png");
background-image: url("resource://gre/res/accessiblecaret_tilt_right@2.25x.png");
}
}

View File

@ -4864,9 +4864,9 @@ pref("caret.manages-android-actionbar", false);
pref("layout.accessiblecaret.enabled", false);
// CSS attributes of the AccessibleCaret in CSS pixels.
pref("layout.accessiblecaret.width", "44.0");
pref("layout.accessiblecaret.height", "47.0");
pref("layout.accessiblecaret.margin-left", "-23.5");
pref("layout.accessiblecaret.width", "34.0");
pref("layout.accessiblecaret.height", "36.0");
pref("layout.accessiblecaret.margin-left", "-18.5");
pref("layout.accessiblecaret.bar.width", "2.0");
// Timeout in milliseconds to hide the accessiblecaret under cursor mode while

View File

@ -85,7 +85,11 @@ class TestCommitParser(unittest.TestCase):
{
'task': 'task/linux',
'dependents': [],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux',
'build_type': 'opt',
'post-build': [],
'interactive': False
}
]
@ -121,7 +125,11 @@ class TestCommitParser(unittest.TestCase):
{
'task': 'task/linux',
'dependents': [],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux',
'build_type': 'opt',
'interactive': False,
'post-build': []
}
]
@ -158,7 +166,11 @@ class TestCommitParser(unittest.TestCase):
{
'task': 'task/linux',
'dependents': [],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux',
'build_type': 'opt',
'interactive': False,
'post-build': []
}
]
@ -195,6 +207,10 @@ class TestCommitParser(unittest.TestCase):
{
'task': 'task/linux',
'dependents': [],
'post-build': [],
'build_name': 'linux',
'build_type': 'opt',
'interactive': False,
'additional-parameters': {}
}
]
@ -239,7 +255,11 @@ class TestCommitParser(unittest.TestCase):
{
'task': 'task/linux-debug',
'dependents': [],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'linux',
'build_type': 'debug',
'interactive': False,
},
{
'task': 'task/linux',
@ -250,7 +270,11 @@ class TestCommitParser(unittest.TestCase):
}
}
}],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'linux',
'build_type': 'opt',
'interactive': False,
}
]
@ -316,12 +340,20 @@ class TestCommitParser(unittest.TestCase):
{
'task': 'task/linux',
'dependents': [],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'linux',
'build_type': 'opt',
'interactive': False,
},
{
'task': 'task/linux-debug',
'dependents': [],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'linux',
'build_type': 'debug',
'interactive': False,
},
{
'task': 'task/win32',
@ -347,7 +379,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'win32',
'build_type': 'opt',
'interactive': False,
}
]
@ -423,7 +459,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'win32',
'build_type': 'opt',
'interactive': False,
}
]
@ -478,7 +518,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'post-build': [],
'build_name': 'linux',
'build_type': 'opt',
'interactive': False,
}
]
result = parse_commit(commit, jobs)
@ -682,7 +726,6 @@ class TestCommitParser(unittest.TestCase):
}
}
}
expected = [
{
'task': 'task/linux',
@ -704,7 +747,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux',
'build_type': 'opt',
'post-build': [],
'interactive': False
},
{
'task': 'task/linux-debug',
@ -726,7 +773,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux',
'build_type': 'debug',
'post-build': [],
'interactive': False
},
{
'task': 'task/linux64',
@ -748,7 +799,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux64',
'build_type': 'opt',
'post-build': [],
'interactive': False
},
{
'task': 'task/linux64-debug',
@ -770,7 +825,11 @@ class TestCommitParser(unittest.TestCase):
}
}
],
'additional-parameters': {}
'additional-parameters': {},
'build_name': 'linux64',
'build_type': 'debug',
'post-build': [],
'interactive': False
}
]