зеркало из https://github.com/mozilla/pjs.git
Merge cedar into mozilla-central
This commit is contained in:
Коммит
ccf9ef9334
|
@ -656,10 +656,10 @@ PrivateBrowsingService.prototype = {
|
|||
"AND state NOT IN (?2, ?3, ?4)"
|
||||
);
|
||||
let pattern = stmt.escapeStringForLIKE(aDomain, "/");
|
||||
stmt.bindStringParameter(0, "%" + pattern + "%");
|
||||
stmt.bindInt32Parameter(1, Ci.nsIDownloadManager.DOWNLOAD_DOWNLOADING);
|
||||
stmt.bindInt32Parameter(2, Ci.nsIDownloadManager.DOWNLOAD_PAUSED);
|
||||
stmt.bindInt32Parameter(3, Ci.nsIDownloadManager.DOWNLOAD_QUEUED);
|
||||
stmt.bindByIndex(0, "%" + pattern + "%");
|
||||
stmt.bindByIndex(1, Ci.nsIDownloadManager.DOWNLOAD_DOWNLOADING);
|
||||
stmt.bindByIndex(2, Ci.nsIDownloadManager.DOWNLOAD_PAUSED);
|
||||
stmt.bindByIndex(3, Ci.nsIDownloadManager.DOWNLOAD_QUEUED);
|
||||
try {
|
||||
stmt.execute();
|
||||
}
|
||||
|
@ -719,7 +719,7 @@ PrivateBrowsingService.prototype = {
|
|||
"WHERE name LIKE ?1 ESCAPE '/'"
|
||||
);
|
||||
let pattern = stmt.escapeStringForLIKE(aDomain, "/");
|
||||
stmt.bindStringParameter(0, "%" + pattern);
|
||||
stmt.bindByIndex(0, "%" + pattern);
|
||||
try {
|
||||
while (stmt.executeStep())
|
||||
if (stmt.getString(0).hasRootDomain(aDomain))
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
!define AppName "Firefox"
|
||||
!define AppVersion "@APP_VERSION@"
|
||||
#ifdef HAVE_64BIT_OS
|
||||
// differentiate 64-bit builds, we do the same in widget.
|
||||
; differentiate 64-bit builds, we do the same in widget.
|
||||
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}.Win64"
|
||||
#else
|
||||
!define AppUserModelID "${AppVendor}.${AppName}.${AppVersion}"
|
||||
|
|
|
@ -441,6 +441,7 @@ PBBUILD_BIN = @PBBUILD@
|
|||
SDP = @SDP@
|
||||
NSINSTALL_BIN = @NSINSTALL_BIN@
|
||||
WGET = @WGET@
|
||||
RPMBUILD = @RPMBUILD@
|
||||
|
||||
ifdef MOZ_NATIVE_JPEG
|
||||
JPEG_CFLAGS = @JPEG_CFLAGS@
|
||||
|
|
|
@ -130,7 +130,7 @@ GCONF_VERSION=1.2.1
|
|||
GIO_VERSION=2.0
|
||||
STARTUP_NOTIFICATION_VERSION=0.8
|
||||
DBUS_VERSION=0.60
|
||||
SQLITE_VERSION=3.7.4
|
||||
SQLITE_VERSION=3.7.5
|
||||
LIBNOTIFY_VERSION=0.4
|
||||
|
||||
MSMANIFEST_TOOL=
|
||||
|
@ -1011,6 +1011,9 @@ if test -z "$XARGS" -o "$XARGS" = ":"; then
|
|||
AC_MSG_ERROR([xargs not found in \$PATH .])
|
||||
fi
|
||||
|
||||
MOZ_PATH_PROG(RPMBUILD, rpmbuild, :)
|
||||
AC_SUBST(RPMBUILD)
|
||||
|
||||
if test "$COMPILE_ENVIRONMENT"; then
|
||||
|
||||
dnl ========================================================
|
||||
|
|
|
@ -560,6 +560,7 @@ GK_ATOM(member, "member")
|
|||
GK_ATOM(menu, "menu")
|
||||
GK_ATOM(menubar, "menubar")
|
||||
GK_ATOM(menubutton, "menubutton")
|
||||
GK_ATOM(menuButton, "menu-button")
|
||||
GK_ATOM(menugenerated, "menugenerated")
|
||||
GK_ATOM(menuitem, "menuitem")
|
||||
GK_ATOM(menulist, "menulist")
|
||||
|
@ -915,6 +916,7 @@ GK_ATOM(span, "span")
|
|||
GK_ATOM(spellcheck, "spellcheck")
|
||||
GK_ATOM(spinner, "spinner")
|
||||
GK_ATOM(split, "split")
|
||||
GK_ATOM(splitmenu, "splitmenu")
|
||||
GK_ATOM(splitter, "splitter")
|
||||
GK_ATOM(spring, "spring")
|
||||
GK_ATOM(src, "src")
|
||||
|
|
|
@ -375,24 +375,24 @@ nsXULTemplateQueryProcessorStorage::CompileQuery(nsIXULTemplateBuilder* aBuilder
|
|||
case 1:
|
||||
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%d",&valInt32);
|
||||
if (typeError > 0)
|
||||
rv = statement->BindInt32Parameter(index, valInt32);
|
||||
rv = statement->BindInt32ByIndex(index, valInt32);
|
||||
break;
|
||||
case 2:
|
||||
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%lld",&valInt64);
|
||||
if (typeError > 0)
|
||||
rv = statement->BindInt64Parameter(index, valInt64);
|
||||
rv = statement->BindInt64ByIndex(index, valInt64);
|
||||
break;
|
||||
case 3:
|
||||
rv = statement->BindNullParameter(index);
|
||||
rv = statement->BindNullByIndex(index);
|
||||
break;
|
||||
case 4:
|
||||
typeError = PR_sscanf(NS_ConvertUTF16toUTF8(value).get(),"%lf",&valFloat);
|
||||
if (typeError > 0)
|
||||
rv = statement->BindDoubleParameter(index, valFloat);
|
||||
rv = statement->BindDoubleByIndex(index, valFloat);
|
||||
break;
|
||||
case 5:
|
||||
case nsIContent::ATTR_MISSING:
|
||||
rv = statement->BindStringParameter(index, value);
|
||||
rv = statement->BindStringByIndex(index, value);
|
||||
break;
|
||||
default:
|
||||
typeError = 0;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
This is sqlite 3.7.4
|
||||
This is sqlite 3.7.5
|
||||
|
||||
-- Paul O’Shannessy <paul@oshannessy.com>, 01/2011
|
||||
-- Shawn Wilsher <me@shawnwilsher.com>, 03/2011
|
||||
|
||||
See http://www.sqlite.org/ for more info.
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ EXPORTS
|
|||
sqlite3_data_count
|
||||
sqlite3_db_handle
|
||||
sqlite3_db_mutex
|
||||
sqlite3_db_status
|
||||
sqlite3_declare_vtab
|
||||
sqlite3_enable_load_extension
|
||||
sqlite3_enable_shared_cache
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -107,9 +107,9 @@ extern "C" {
|
|||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||
** [sqlite_version()] and [sqlite_source_id()].
|
||||
*/
|
||||
#define SQLITE_VERSION "3.7.4"
|
||||
#define SQLITE_VERSION_NUMBER 3007004
|
||||
#define SQLITE_SOURCE_ID "2010-12-07 20:14:09 a586a4deeb25330037a49df295b36aaf624d0f45"
|
||||
#define SQLITE_VERSION "3.7.5"
|
||||
#define SQLITE_VERSION_NUMBER 3007005
|
||||
#define SQLITE_SOURCE_ID "2011-01-28 17:03:50 ed759d5a9edb3bba5f48f243df47be29e3fe8cd7"
|
||||
|
||||
/*
|
||||
** CAPI3REF: Run-Time Library Version Numbers
|
||||
|
@ -390,7 +390,7 @@ SQLITE_API int sqlite3_exec(
|
|||
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
|
||||
#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
|
||||
#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
|
||||
#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
|
||||
#define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */
|
||||
#define SQLITE_FULL 13 /* Insertion failed because database is full */
|
||||
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
|
||||
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
|
||||
|
@ -622,7 +622,9 @@ struct sqlite3_file {
|
|||
** core reserves all opcodes less than 100 for its own use.
|
||||
** A [SQLITE_FCNTL_LOCKSTATE | list of opcodes] less than 100 is available.
|
||||
** Applications that define a custom xFileControl method should use opcodes
|
||||
** greater than 100 to avoid conflicts.
|
||||
** greater than 100 to avoid conflicts. VFS implementations should
|
||||
** return [SQLITE_NOTFOUND] for file control opcodes that they do not
|
||||
** recognize.
|
||||
**
|
||||
** The xSectorSize() method returns the sector size of the
|
||||
** device that underlies the file. The sector size is the
|
||||
|
@ -715,6 +717,21 @@ struct sqlite3_io_methods {
|
|||
** for the nominated database. Allocating database file space in large
|
||||
** chunks (say 1MB at a time), may reduce file-system fragmentation and
|
||||
** improve performance on some systems.
|
||||
**
|
||||
** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
|
||||
** to the [sqlite3_file] object associated with a particular database
|
||||
** connection. See the [sqlite3_file_control()] documentation for
|
||||
** additional information.
|
||||
**
|
||||
** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by
|
||||
** SQLite and sent to all VFSes in place of a call to the xSync method
|
||||
** when the database connection has [PRAGMA synchronous] set to OFF.)^
|
||||
** Some specialized VFSes need this signal in order to operate correctly
|
||||
** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most
|
||||
** VFSes do not need this signal and should silently ignore this opcode.
|
||||
** Applications should not call [sqlite3_file_control()] with this
|
||||
** opcode as doing so may disrupt the operation of the specilized VFSes
|
||||
** that do require it.
|
||||
*/
|
||||
#define SQLITE_FCNTL_LOCKSTATE 1
|
||||
#define SQLITE_GET_LOCKPROXYFILE 2
|
||||
|
@ -723,6 +740,7 @@ struct sqlite3_io_methods {
|
|||
#define SQLITE_FCNTL_SIZE_HINT 5
|
||||
#define SQLITE_FCNTL_CHUNK_SIZE 6
|
||||
#define SQLITE_FCNTL_FILE_POINTER 7
|
||||
#define SQLITE_FCNTL_SYNC_OMITTED 8
|
||||
|
||||
|
||||
/*
|
||||
|
@ -1842,7 +1860,7 @@ SQLITE_API void sqlite3_free_table(char **result);
|
|||
** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
|
||||
** memory to hold the resulting string.
|
||||
**
|
||||
** ^(In sqlite3_snprintf() routine is similar to "snprintf()" from
|
||||
** ^(The sqlite3_snprintf() routine is similar to "snprintf()" from
|
||||
** the standard C library. The result is written into the
|
||||
** buffer supplied as the second parameter whose size is given by
|
||||
** the first parameter. Note that the order of the
|
||||
|
@ -1861,6 +1879,8 @@ SQLITE_API void sqlite3_free_table(char **result);
|
|||
** the zero terminator. So the longest string that can be completely
|
||||
** written will be n-1 characters.
|
||||
**
|
||||
** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf().
|
||||
**
|
||||
** These routines all implement some additional formatting
|
||||
** options that are useful for constructing SQL statements.
|
||||
** All of the usual printf() formatting options apply. In addition, there
|
||||
|
@ -1924,6 +1944,7 @@ SQLITE_API void sqlite3_free_table(char **result);
|
|||
SQLITE_API char *sqlite3_mprintf(const char*,...);
|
||||
SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
|
||||
SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
|
||||
SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Memory Allocation Subsystem
|
||||
|
@ -2301,7 +2322,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
|||
** case the database must already exist, otherwise an error is returned.</dd>)^
|
||||
**
|
||||
** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
|
||||
** <dd>The database is opened for reading and writing, and is creates it if
|
||||
** <dd>The database is opened for reading and writing, and is created if
|
||||
** it does not already exist. This is the behavior that is always used for
|
||||
** sqlite3_open() and sqlite3_open16().</dd>)^
|
||||
** </dl>
|
||||
|
@ -2650,14 +2671,31 @@ SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
|
|||
/*
|
||||
** CAPI3REF: Determine If An SQL Statement Writes The Database
|
||||
**
|
||||
** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
|
||||
** the [prepared statement] X is [SELECT] statement and false (zero) if
|
||||
** X is an [INSERT], [UPDATE], [DELETE], CREATE, DROP, [ANALYZE],
|
||||
** [ALTER], or [REINDEX] statement.
|
||||
** If X is a NULL pointer or any other kind of statement, including but
|
||||
** not limited to [ATTACH], [DETACH], [COMMIT], [ROLLBACK], [RELEASE],
|
||||
** [SAVEPOINT], [PRAGMA], or [VACUUM] the result of sqlite3_stmt_readonly(X) is
|
||||
** undefined.
|
||||
** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
|
||||
** and only if the [prepared statement] X makes no direct changes to
|
||||
** the content of the database file.
|
||||
**
|
||||
** Note that [application-defined SQL functions] or
|
||||
** [virtual tables] might change the database indirectly as a side effect.
|
||||
** ^(For example, if an application defines a function "eval()" that
|
||||
** calls [sqlite3_exec()], then the following SQL statement would
|
||||
** change the database file through side-effects:
|
||||
**
|
||||
** <blockquote><pre>
|
||||
** SELECT eval('DELETE FROM t1') FROM t2;
|
||||
** </pre></blockquote>
|
||||
**
|
||||
** But because the [SELECT] statement does not change the database file
|
||||
** directly, sqlite3_stmt_readonly() would still return true.)^
|
||||
**
|
||||
** ^Transaction control statements such as [BEGIN], [COMMIT], [ROLLBACK],
|
||||
** [SAVEPOINT], and [RELEASE] cause sqlite3_stmt_readonly() to return true,
|
||||
** since the statements themselves do not actually modify the database but
|
||||
** rather they control the timing of when other statements modify the
|
||||
** database. ^The [ATTACH] and [DETACH] statements also cause
|
||||
** sqlite3_stmt_readonly() to return true since, while those statements
|
||||
** change the configuration of a database connection, they do not make
|
||||
** changes to the content of the database files on disk.
|
||||
*/
|
||||
SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
||||
|
||||
|
@ -3051,13 +3089,17 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
|||
** be the case that the same database connection is being used by two or
|
||||
** more threads at the same moment in time.
|
||||
**
|
||||
** For all versions of SQLite up to and including 3.6.23.1, it was required
|
||||
** after sqlite3_step() returned anything other than [SQLITE_ROW] that
|
||||
** [sqlite3_reset()] be called before any subsequent invocation of
|
||||
** sqlite3_step(). Failure to invoke [sqlite3_reset()] in this way would
|
||||
** result in an [SQLITE_MISUSE] return from sqlite3_step(). But after
|
||||
** version 3.6.23.1, sqlite3_step() began calling [sqlite3_reset()]
|
||||
** automatically in this circumstance rather than returning [SQLITE_MISUSE].
|
||||
** For all versions of SQLite up to and including 3.6.23.1, a call to
|
||||
** [sqlite3_reset()] was required after sqlite3_step() returned anything
|
||||
** other than [SQLITE_ROW] before any subsequent invocation of
|
||||
** sqlite3_step(). Failure to reset the prepared statement using
|
||||
** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
|
||||
** sqlite3_step(). But after version 3.6.23.1, sqlite3_step() began
|
||||
** calling [sqlite3_reset()] automatically in this circumstance rather
|
||||
** than returning [SQLITE_MISUSE]. This is not considered a compatibility
|
||||
** break because any application that ever receives an SQLITE_MISUSE error
|
||||
** is broken by definition. The [SQLITE_OMIT_AUTORESET] compile-time option
|
||||
** can be used to restore the legacy behavior.
|
||||
**
|
||||
** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step()
|
||||
** API always returns a generic error code, [SQLITE_ERROR], following any
|
||||
|
@ -3394,7 +3436,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
|||
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
|
||||
** function can gain access to this pointer using [sqlite3_user_data()].)^
|
||||
**
|
||||
** ^The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
|
||||
** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are
|
||||
** pointers to C-language functions that implement the SQL function or
|
||||
** aggregate. ^A scalar SQL function requires an implementation of the xFunc
|
||||
** callback only; NULL pointers must be passed as the xStep and xFinal
|
||||
|
@ -3403,7 +3445,7 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
|||
** SQL function or aggregate, pass NULL poiners for all three function
|
||||
** callbacks.
|
||||
**
|
||||
** ^(If the tenth parameter to sqlite3_create_function_v2() is not NULL,
|
||||
** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
|
||||
** then it is destructor for the application data pointer.
|
||||
** The destructor is invoked when the function is deleted, either by being
|
||||
** overloaded or when the database connection closes.)^
|
||||
|
@ -3507,7 +3549,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
|||
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
|
||||
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
|
||||
** define callbacks that implement the SQL functions and aggregates.
|
||||
** The 4th parameter to these callbacks is an array of pointers to
|
||||
** The 3rd parameter to these callbacks is an array of pointers to
|
||||
** [protected sqlite3_value] objects. There is one [sqlite3_value] object for
|
||||
** each parameter to the SQL function. These routines are used to
|
||||
** extract values from the [sqlite3_value] objects.
|
||||
|
@ -5235,7 +5277,8 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
|
|||
#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */
|
||||
#define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_random() */
|
||||
#define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
|
||||
#define SQLITE_MUTEX_STATIC_LRU2 7 /* lru page list */
|
||||
#define SQLITE_MUTEX_STATIC_LRU2 7 /* NOT USED */
|
||||
#define SQLITE_MUTEX_STATIC_PMEM 7 /* sqlite3PageMalloc() */
|
||||
|
||||
/*
|
||||
** CAPI3REF: Retrieve the mutex for a database connection
|
||||
|
@ -5386,7 +5429,8 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
|
|||
** The value written into the *pCurrent parameter is undefined.</dd>)^
|
||||
**
|
||||
** ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
|
||||
** <dd>This parameter records the number of separate memory allocations.</dd>)^
|
||||
** <dd>This parameter records the number of separate memory allocations
|
||||
** currently checked out.</dd>)^
|
||||
**
|
||||
** ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
|
||||
** <dd>This parameter returns the number of pages used out of the
|
||||
|
@ -5492,6 +5536,28 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|||
** <dd>This parameter returns the number of lookaside memory slots currently
|
||||
** checked out.</dd>)^
|
||||
**
|
||||
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
|
||||
** <dd>This parameter returns the number malloc attempts that were
|
||||
** satisfied using lookaside memory. Only the high-water value is meaningful;
|
||||
** the current value is always zero.
|
||||
** checked out.</dd>)^
|
||||
**
|
||||
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
|
||||
** <dd>This parameter returns the number malloc attempts that might have
|
||||
** been satisfied using lookaside memory but failed due to the amount of
|
||||
** memory requested being larger than the lookaside slot size.
|
||||
** Only the high-water value is meaningful;
|
||||
** the current value is always zero.
|
||||
** checked out.</dd>)^
|
||||
**
|
||||
** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
|
||||
** <dd>This parameter returns the number malloc attempts that might have
|
||||
** been satisfied using lookaside memory but failed due to all lookaside
|
||||
** memory already being in use.
|
||||
** Only the high-water value is meaningful;
|
||||
** the current value is always zero.
|
||||
** checked out.</dd>)^
|
||||
**
|
||||
** ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
|
||||
** <dd>This parameter returns the approximate number of of bytes of heap
|
||||
** memory used by all pager caches associated with the database connection.)^
|
||||
|
@ -5514,11 +5580,14 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
|
|||
** </dd>
|
||||
** </dl>
|
||||
*/
|
||||
#define SQLITE_DBSTATUS_LOOKASIDE_USED 0
|
||||
#define SQLITE_DBSTATUS_CACHE_USED 1
|
||||
#define SQLITE_DBSTATUS_SCHEMA_USED 2
|
||||
#define SQLITE_DBSTATUS_STMT_USED 3
|
||||
#define SQLITE_DBSTATUS_MAX 3 /* Largest defined DBSTATUS */
|
||||
#define SQLITE_DBSTATUS_LOOKASIDE_USED 0
|
||||
#define SQLITE_DBSTATUS_CACHE_USED 1
|
||||
#define SQLITE_DBSTATUS_SCHEMA_USED 2
|
||||
#define SQLITE_DBSTATUS_STMT_USED 3
|
||||
#define SQLITE_DBSTATUS_LOOKASIDE_HIT 4
|
||||
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 5
|
||||
#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 6
|
||||
#define SQLITE_DBSTATUS_MAX 6 /* Largest defined DBSTATUS */
|
||||
|
||||
|
||||
/*
|
||||
|
@ -5646,11 +5715,13 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|||
** first parameter, szPage, is the size in bytes of the pages that must
|
||||
** be allocated by the cache. ^szPage will not be a power of two. ^szPage
|
||||
** will the page size of the database file that is to be cached plus an
|
||||
** increment (here called "R") of about 100 or 200. SQLite will use the
|
||||
** increment (here called "R") of less than 250. SQLite will use the
|
||||
** extra R bytes on each page to store metadata about the underlying
|
||||
** database page on disk. The value of R depends
|
||||
** on the SQLite version, the target platform, and how SQLite was compiled.
|
||||
** ^R is constant for a particular build of SQLite. ^The second argument to
|
||||
** ^(R is constant for a particular build of SQLite. Except, there are two
|
||||
** distinct values of R when SQLite is compiled with the proprietary
|
||||
** ZIPVFS extension.)^ ^The second argument to
|
||||
** xCreate(), bPurgeable, is true if the cache being created will
|
||||
** be used to cache database pages of a file stored on disk, or
|
||||
** false if it is used for an in-memory database. The cache implementation
|
||||
|
@ -5682,7 +5753,7 @@ typedef struct sqlite3_pcache sqlite3_pcache;
|
|||
** If the requested page is already in the page cache, then the page cache
|
||||
** implementation must return a pointer to the page buffer with its content
|
||||
** intact. If the requested page is not already in the cache, then the
|
||||
** behavior of the cache implementation should use the value of the createFlag
|
||||
** cache implementation should use the value of the createFlag
|
||||
** parameter to help it determined what action to take:
|
||||
**
|
||||
** <table border=1 width=85% align=center>
|
||||
|
@ -5766,11 +5837,12 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|||
**
|
||||
** See Also: [Using the SQLite Online Backup API]
|
||||
**
|
||||
** ^Exclusive access is required to the destination database for the
|
||||
** duration of the operation. ^However the source database is only
|
||||
** read-locked while it is actually being read; it is not locked
|
||||
** continuously for the entire backup operation. ^Thus, the backup may be
|
||||
** performed on a live source database without preventing other users from
|
||||
** ^SQLite holds a write transaction open on the destination database file
|
||||
** for the duration of the backup operation.
|
||||
** ^The source database is read-locked only while it is being read;
|
||||
** it is not locked continuously for the entire backup operation.
|
||||
** ^Thus, the backup may be performed on a live source database without
|
||||
** preventing other database connections from
|
||||
** reading or writing to the source database while the backup is underway.
|
||||
**
|
||||
** ^(To perform a backup operation:
|
||||
|
@ -5797,11 +5869,11 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|||
** sqlite3_backup_init(D,N,S,M) identify the [database connection]
|
||||
** and database name of the source database, respectively.
|
||||
** ^The source and destination [database connections] (parameters S and D)
|
||||
** must be different or else sqlite3_backup_init(D,N,S,M) will file with
|
||||
** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
|
||||
** an error.
|
||||
**
|
||||
** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
|
||||
** returned and an error code and error message are store3d in the
|
||||
** returned and an error code and error message are stored in the
|
||||
** destination [database connection] D.
|
||||
** ^The error code and message for the failed call to sqlite3_backup_init()
|
||||
** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or
|
||||
|
@ -5818,7 +5890,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|||
** the source and destination databases specified by [sqlite3_backup] object B.
|
||||
** ^If N is negative, all remaining source pages are copied.
|
||||
** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
|
||||
** are still more pages to be copied, then the function resturns [SQLITE_OK].
|
||||
** are still more pages to be copied, then the function returns [SQLITE_OK].
|
||||
** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
|
||||
** from source to destination, then it returns [SQLITE_DONE].
|
||||
** ^If an error occurs while running sqlite3_backup_step(B,N),
|
||||
|
@ -5832,7 +5904,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
|||
** <li> the destination database was opened read-only, or
|
||||
** <li> the destination database is using write-ahead-log journaling
|
||||
** and the destination and source page sizes differ, or
|
||||
** <li> The destination database is an in-memory database and the
|
||||
** <li> the destination database is an in-memory database and the
|
||||
** destination and source page sizes differ.
|
||||
** </ol>)^
|
||||
**
|
||||
|
@ -6163,7 +6235,8 @@ SQLITE_API void *sqlite3_wal_hook(
|
|||
** from SQL.
|
||||
**
|
||||
** ^Every new [database connection] defaults to having the auto-checkpoint
|
||||
** enabled with a threshold of 1000 pages. The use of this interface
|
||||
** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
|
||||
** pages. The use of this interface
|
||||
** is only necessary if the default setting is found to be suboptimal
|
||||
** for a particular application.
|
||||
*/
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
* http://www.w3.org/TR/DOM-Level-2-Style
|
||||
*/
|
||||
|
||||
[scriptable, uuid(abedfd52-9821-4311-b50c-7ef229b43abf)]
|
||||
[scriptable, uuid(6b8fda8f-94f6-4d5c-aa77-17c5270f36c7)]
|
||||
interface nsIDOMCSS2Properties : nsISupports
|
||||
{
|
||||
attribute DOMString azimuth;
|
||||
|
@ -734,6 +734,12 @@ interface nsIDOMCSS2Properties : nsISupports
|
|||
attribute DOMString backgroundSize;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozTextDecorationColor;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozTextDecorationStyle;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozTransitionProperty;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
|
|
|
@ -46,7 +46,6 @@ MODULE = editor
|
|||
GRE_MODULE = 1
|
||||
|
||||
XPIDLSRCS = \
|
||||
nsICiter.idl \
|
||||
nsIDocumentStateListener.idl \
|
||||
nsIEditActionListener.idl \
|
||||
nsIEditor.idl \
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "domstubs.idl"
|
||||
%{C++
|
||||
#include "nsString.h"
|
||||
%}
|
||||
/** Handle plaintext citations, as in mail quoting.
|
||||
* Used by the editor but not dependant on it.
|
||||
*/
|
||||
|
||||
[scriptable, uuid(a6cf9102-15b3-11d2-932e-00805f8add32)]
|
||||
|
||||
interface nsICiter : nsISupports
|
||||
{
|
||||
|
||||
DOMString GetCiteString(in DOMString aInString);
|
||||
|
||||
DOMString StripCites(in DOMString aInString);
|
||||
|
||||
DOMString Rewrap(in DOMString aInString,
|
||||
in unsigned long aWrapCol, in unsigned long aFirstLineOffset,
|
||||
in boolean aRespectNewlines);
|
||||
};
|
||||
|
||||
|
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/common.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/common.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/handlers.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/handlers.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/common.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/common.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/editable.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/editable.css
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/canonicalize.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/canonicalize.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/compare.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/compare.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/output.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/output.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/pad.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/pad.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/range.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/range.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/run.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/run.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/units.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/units.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/variables.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/static/js/variables.js
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/output.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/output.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/richtext2.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/templates/richtext2.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/__init__.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/apply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/apply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/applyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/applyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/change.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/change.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/changeCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/changeCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/delete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/delete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/forwarddelete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/forwarddelete.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/insert.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryEnabled.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryEnabled.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryIndeterm.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryIndeterm.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryState.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryState.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/querySupported.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/querySupported.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryValue.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/queryValue.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/selection.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/selection.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapply.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapplyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/tests/unapplyCSS.py
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/unittestexample.html
Executable file → Normal file
0
editor/libeditor/html/tests/browserscope/lib/richtext2/richtext2/unittestexample.html
Executable file → Normal file
|
@ -58,18 +58,7 @@ const PRUnichar cr('\r');
|
|||
/** Mail citations using the Internet style: > This is a citation
|
||||
*/
|
||||
|
||||
|
||||
nsInternetCiter::nsInternetCiter()
|
||||
{
|
||||
}
|
||||
|
||||
nsInternetCiter::~nsInternetCiter()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsInternetCiter, nsICiter)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsresult
|
||||
nsInternetCiter::GetCiteString(const nsAString& aInString, nsAString& aOutString)
|
||||
{
|
||||
aOutString.Truncate();
|
||||
|
@ -155,7 +144,7 @@ nsInternetCiter::StripCitesAndLinebreaks(const nsAString& aInString,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsresult
|
||||
nsInternetCiter::StripCites(const nsAString& aInString, nsAString& aOutString)
|
||||
{
|
||||
return StripCitesAndLinebreaks(aInString, aOutString, PR_FALSE, 0);
|
||||
|
@ -188,7 +177,7 @@ static inline PRBool IsSpace(PRUnichar c)
|
|||
return (nsCRT::IsAsciiSpace(c) || (c == nl) || (c == cr) || (c == nbsp));
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsresult
|
||||
nsInternetCiter::Rewrap(const nsAString& aInString,
|
||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||
PRBool aRespectNewlines,
|
||||
|
|
|
@ -38,33 +38,25 @@
|
|||
#ifndef nsInternetCiter_h__
|
||||
#define nsInternetCiter_h__
|
||||
|
||||
#include "nsICiter.h"
|
||||
|
||||
#include "nsString.h"
|
||||
|
||||
/** Mail citations using standard Internet style.
|
||||
*/
|
||||
class nsInternetCiter : public nsICiter
|
||||
class nsInternetCiter
|
||||
{
|
||||
public:
|
||||
nsInternetCiter();
|
||||
virtual ~nsInternetCiter();
|
||||
//Interfaces for addref and release and queryinterface
|
||||
//NOTE: Use NS_DECL_ISUPPORTS_INHERITED in any class inherited from nsEditor
|
||||
NS_DECL_ISUPPORTS
|
||||
static nsresult GetCiteString(const nsAString & aInString, nsAString & aOutString);
|
||||
|
||||
NS_IMETHOD GetCiteString(const nsAString & aInString, nsAString & aOutString);
|
||||
static nsresult StripCites(const nsAString & aInString, nsAString & aOutString);
|
||||
|
||||
NS_IMETHOD StripCites(const nsAString & aInString, nsAString & aOutString);
|
||||
|
||||
NS_IMETHOD Rewrap(const nsAString & aInString,
|
||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||
PRBool aRespectNewlines,
|
||||
nsAString & aOutString);
|
||||
static nsresult Rewrap(const nsAString & aInString,
|
||||
PRUint32 aWrapCol, PRUint32 aFirstLineOffset,
|
||||
PRBool aRespectNewlines,
|
||||
nsAString & aOutString);
|
||||
|
||||
protected:
|
||||
nsresult StripCitesAndLinebreaks(const nsAString& aInString, nsAString& aOutString,
|
||||
PRBool aLinebreaksToo, PRInt32* aCiteLevel);
|
||||
static nsresult StripCitesAndLinebreaks(const nsAString& aInString, nsAString& aOutString,
|
||||
PRBool aLinebreaksToo, PRInt32* aCiteLevel);
|
||||
};
|
||||
|
||||
#endif //nsInternetCiter_h__
|
||||
|
|
|
@ -1530,12 +1530,9 @@ nsPlaintextEditor::InsertAsQuotation(const nsAString& aQuotedText,
|
|||
// Protect the edit rules object from dying
|
||||
nsCOMPtr<nsIEditRules> kungFuDeathGrip(mRules);
|
||||
|
||||
// We have the text. Cite it appropriately:
|
||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
||||
|
||||
// Let the citer quote it for us:
|
||||
nsString quotedStuff;
|
||||
nsresult rv = citer->GetCiteString(aQuotedText, quotedStuff);
|
||||
nsresult rv = nsInternetCiter::GetCiteString(aQuotedText, quotedStuff);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// It's best to put a blank line after the quoted text so that mails
|
||||
|
@ -1630,13 +1627,9 @@ nsPlaintextEditor::Rewrap(PRBool aRespectNewlines)
|
|||
&isCollapsed, current);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
NS_ENSURE_TRUE(citer, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsString wrapped;
|
||||
PRUint32 firstLineOffset = 0; // XXX need to reset this if there is a selection
|
||||
rv = citer->Rewrap(current, wrapCol, firstLineOffset, aRespectNewlines,
|
||||
rv = nsInternetCiter::Rewrap(current, wrapCol, firstLineOffset, aRespectNewlines,
|
||||
wrapped);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
@ -1659,11 +1652,8 @@ nsPlaintextEditor::StripCites()
|
|||
&isCollapsed, current);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsICiter> citer = new nsInternetCiter();
|
||||
NS_ENSURE_TRUE(citer, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsString stripped;
|
||||
rv = citer->StripCites(current, stripped);
|
||||
rv = nsInternetCiter::StripCites(current, stripped);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (isCollapsed) // rewrap the whole document
|
||||
|
|
|
@ -935,10 +935,10 @@ nsPermissionManager::Read()
|
|||
getter_AddRefs(stmtDeleteExpired));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = stmtDeleteExpired->BindInt32Parameter(0, nsIPermissionManager::EXPIRE_TIME);
|
||||
rv = stmtDeleteExpired->BindInt32ByIndex(0, nsIPermissionManager::EXPIRE_TIME);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = stmtDeleteExpired->BindInt64Parameter(1, PR_Now() / 1000);
|
||||
rv = stmtDeleteExpired->BindInt64ByIndex(1, PR_Now() / 1000);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
PRBool hasResult;
|
||||
|
@ -1111,43 +1111,43 @@ nsPermissionManager::UpdateDB(OperationType aOp,
|
|||
switch (aOp) {
|
||||
case eOperationAdding:
|
||||
{
|
||||
rv = aStmt->BindInt64Parameter(0, aID);
|
||||
rv = aStmt->BindInt64ByIndex(0, aID);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindUTF8StringParameter(1, aHost);
|
||||
rv = aStmt->BindUTF8StringByIndex(1, aHost);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindUTF8StringParameter(2, aType);
|
||||
rv = aStmt->BindUTF8StringByIndex(2, aType);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindInt32Parameter(3, aPermission);
|
||||
rv = aStmt->BindInt32ByIndex(3, aPermission);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindInt32Parameter(4, aExpireType);
|
||||
rv = aStmt->BindInt32ByIndex(4, aExpireType);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindInt64Parameter(5, aExpireTime);
|
||||
rv = aStmt->BindInt64ByIndex(5, aExpireTime);
|
||||
break;
|
||||
}
|
||||
|
||||
case eOperationRemoving:
|
||||
{
|
||||
rv = aStmt->BindInt64Parameter(0, aID);
|
||||
rv = aStmt->BindInt64ByIndex(0, aID);
|
||||
break;
|
||||
}
|
||||
|
||||
case eOperationChanging:
|
||||
{
|
||||
rv = aStmt->BindInt64Parameter(0, aID);
|
||||
rv = aStmt->BindInt64ByIndex(0, aID);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindInt32Parameter(1, aPermission);
|
||||
rv = aStmt->BindInt32ByIndex(1, aPermission);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindInt32Parameter(2, aExpireType);
|
||||
rv = aStmt->BindInt32ByIndex(2, aExpireType);
|
||||
if (NS_FAILED(rv)) break;
|
||||
|
||||
rv = aStmt->BindInt64Parameter(3, aExpireTime);
|
||||
rv = aStmt->BindInt64ByIndex(3, aExpireTime);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -3404,35 +3404,36 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
|||
Decl(listenertype, listenervar.name) ],
|
||||
virtual=1))
|
||||
|
||||
switchontype = StmtSwitch(pvar)
|
||||
for managee in p.managesStmts:
|
||||
case = StmtBlock()
|
||||
actorvar = ExprVar('actor')
|
||||
manageeipdltype = managee.decl.type
|
||||
manageecxxtype = _cxxBareType(ipdl.type.ActorType(manageeipdltype),
|
||||
self.side)
|
||||
manageearray = p.managedVar(manageeipdltype, self.side)
|
||||
if not len(p.managesStmts):
|
||||
removemanagee.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||
else:
|
||||
switchontype = StmtSwitch(pvar)
|
||||
for managee in p.managesStmts:
|
||||
case = StmtBlock()
|
||||
actorvar = ExprVar('actor')
|
||||
manageeipdltype = managee.decl.type
|
||||
manageecxxtype = _cxxBareType(ipdl.type.ActorType(manageeipdltype),
|
||||
self.side)
|
||||
manageearray = p.managedVar(manageeipdltype, self.side)
|
||||
|
||||
case.addstmts([
|
||||
StmtDecl(Decl(manageecxxtype, actorvar.name),
|
||||
ExprCast(listenervar, manageecxxtype, static=1)),
|
||||
_abortIfFalse(
|
||||
_cxxArrayHasElementSorted(manageearray, actorvar),
|
||||
"actor not managed by this!"),
|
||||
Whitespace.NL,
|
||||
StmtExpr(_callCxxArrayRemoveSorted(manageearray, actorvar)),
|
||||
StmtExpr(ExprCall(_deallocMethod(manageeipdltype),
|
||||
args=[ actorvar ])),
|
||||
StmtReturn()
|
||||
])
|
||||
switchontype.addcase(CaseLabel(_protocolId(manageeipdltype).name),
|
||||
case)
|
||||
|
||||
default = StmtBlock()
|
||||
default.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||
switchontype.addcase(DefaultLabel(), default)
|
||||
|
||||
removemanagee.addstmt(switchontype)
|
||||
case.addstmts([
|
||||
StmtDecl(Decl(manageecxxtype, actorvar.name),
|
||||
ExprCast(listenervar, manageecxxtype, static=1)),
|
||||
_abortIfFalse(
|
||||
_cxxArrayHasElementSorted(manageearray, actorvar),
|
||||
"actor not managed by this!"),
|
||||
Whitespace.NL,
|
||||
StmtExpr(_callCxxArrayRemoveSorted(manageearray, actorvar)),
|
||||
StmtExpr(ExprCall(_deallocMethod(manageeipdltype),
|
||||
args=[ actorvar ])),
|
||||
StmtReturn()
|
||||
])
|
||||
switchontype.addcase(CaseLabel(_protocolId(manageeipdltype).name),
|
||||
case)
|
||||
default = StmtBlock()
|
||||
default.addstmts([ _runtimeAbort('unreached'), StmtReturn() ])
|
||||
switchontype.addcase(DefaultLabel(), default)
|
||||
removemanagee.addstmt(switchontype)
|
||||
|
||||
return [ register,
|
||||
registerid,
|
||||
|
|
|
@ -3415,7 +3415,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
const PRUint8 aStyle,
|
||||
const gfxFloat aDescentLimit)
|
||||
{
|
||||
NS_ASSERTION(aStyle != DECORATION_STYLE_NONE, "aStyle is none");
|
||||
NS_ASSERTION(aStyle != NS_STYLE_TEXT_DECORATION_STYLE_NONE, "aStyle is none");
|
||||
|
||||
gfxRect rect =
|
||||
GetTextDecorationRectInternal(aPt, aLineSize, aAscent, aOffset,
|
||||
|
@ -3438,12 +3438,12 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
nsRefPtr<gfxPattern> oldPattern;
|
||||
|
||||
switch (aStyle) {
|
||||
case DECORATION_STYLE_SOLID:
|
||||
case DECORATION_STYLE_DOUBLE:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_SOLID:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE:
|
||||
oldLineWidth = aGfxContext->CurrentLineWidth();
|
||||
oldPattern = aGfxContext->GetPattern();
|
||||
break;
|
||||
case DECORATION_STYLE_DASHED: {
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DASHED: {
|
||||
aGfxContext->Save();
|
||||
contextIsSaved = PR_TRUE;
|
||||
aGfxContext->Clip(rect);
|
||||
|
@ -3455,7 +3455,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
rect.size.width += dashWidth;
|
||||
break;
|
||||
}
|
||||
case DECORATION_STYLE_DOTTED: {
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOTTED: {
|
||||
aGfxContext->Save();
|
||||
contextIsSaved = PR_TRUE;
|
||||
aGfxContext->Clip(rect);
|
||||
|
@ -3474,7 +3474,7 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
rect.size.width += dashWidth;
|
||||
break;
|
||||
}
|
||||
case DECORATION_STYLE_WAVY:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_WAVY:
|
||||
aGfxContext->Save();
|
||||
contextIsSaved = PR_TRUE;
|
||||
aGfxContext->Clip(rect);
|
||||
|
@ -3498,13 +3498,13 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
aGfxContext->SetColor(gfxRGBA(aColor));
|
||||
aGfxContext->SetLineWidth(lineHeight);
|
||||
switch (aStyle) {
|
||||
case DECORATION_STYLE_SOLID:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_SOLID:
|
||||
aGfxContext->NewPath();
|
||||
aGfxContext->MoveTo(rect.TopLeft());
|
||||
aGfxContext->LineTo(rect.TopRight());
|
||||
aGfxContext->Stroke();
|
||||
break;
|
||||
case DECORATION_STYLE_DOUBLE:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE:
|
||||
/**
|
||||
* We are drawing double line as:
|
||||
*
|
||||
|
@ -3527,14 +3527,14 @@ nsCSSRendering::PaintDecorationLine(gfxContext* aGfxContext,
|
|||
aGfxContext->LineTo(rect.BottomRight());
|
||||
aGfxContext->Stroke();
|
||||
break;
|
||||
case DECORATION_STYLE_DOTTED:
|
||||
case DECORATION_STYLE_DASHED:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DOTTED:
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_DASHED:
|
||||
aGfxContext->NewPath();
|
||||
aGfxContext->MoveTo(rect.TopLeft());
|
||||
aGfxContext->LineTo(rect.TopRight());
|
||||
aGfxContext->Stroke();
|
||||
break;
|
||||
case DECORATION_STYLE_WAVY: {
|
||||
case NS_STYLE_TEXT_DECORATION_STYLE_WAVY: {
|
||||
/**
|
||||
* We are drawing wavy line as:
|
||||
*
|
||||
|
@ -3616,7 +3616,7 @@ nsCSSRendering::GetTextDecorationRect(nsPresContext* aPresContext,
|
|||
const gfxFloat aDescentLimit)
|
||||
{
|
||||
NS_ASSERTION(aPresContext, "aPresContext is null");
|
||||
NS_ASSERTION(aStyle != DECORATION_STYLE_NONE, "aStyle is none");
|
||||
NS_ASSERTION(aStyle != NS_STYLE_TEXT_DECORATION_STYLE_NONE, "aStyle is none");
|
||||
|
||||
gfxRect rect =
|
||||
GetTextDecorationRectInternal(gfxPoint(0, 0), aLineSize, aAscent, aOffset,
|
||||
|
@ -3639,9 +3639,10 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
|||
const PRUint8 aStyle,
|
||||
const gfxFloat aDescentLimit)
|
||||
{
|
||||
NS_ASSERTION(aStyle <= DECORATION_STYLE_WAVY, "Invalid aStyle value");
|
||||
NS_ASSERTION(aStyle <= NS_STYLE_TEXT_DECORATION_STYLE_WAVY,
|
||||
"Invalid aStyle value");
|
||||
|
||||
if (aStyle == DECORATION_STYLE_NONE)
|
||||
if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_NONE)
|
||||
return gfxRect(0, 0, 0, 0);
|
||||
|
||||
PRBool canLiftUnderline = aDescentLimit >= 0.0;
|
||||
|
@ -3658,7 +3659,7 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
|||
|
||||
gfxFloat suggestedMaxRectHeight = NS_MAX(NS_MIN(ascent, descentLimit), 1.0);
|
||||
r.size.height = lineHeight;
|
||||
if (aStyle == DECORATION_STYLE_DOUBLE) {
|
||||
if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE) {
|
||||
/**
|
||||
* We will draw double line as:
|
||||
*
|
||||
|
@ -3684,7 +3685,7 @@ nsCSSRendering::GetTextDecorationRectInternal(const gfxPoint& aPt,
|
|||
r.size.height = NS_MAX(suggestedMaxRectHeight, lineHeight * 2.0 + 1.0);
|
||||
}
|
||||
}
|
||||
} else if (aStyle == DECORATION_STYLE_WAVY) {
|
||||
} else if (aStyle == NS_STYLE_TEXT_DECORATION_STYLE_WAVY) {
|
||||
/**
|
||||
* We will draw wavy line as:
|
||||
*
|
||||
|
|
|
@ -286,15 +286,6 @@ struct nsCSSRendering {
|
|||
PRUint8 aEndBevelSide = 0,
|
||||
nscoord aEndBevelOffset = 0);
|
||||
|
||||
enum {
|
||||
DECORATION_STYLE_NONE = 0,
|
||||
DECORATION_STYLE_SOLID = 1,
|
||||
DECORATION_STYLE_DOTTED = 2,
|
||||
DECORATION_STYLE_DASHED = 3,
|
||||
DECORATION_STYLE_DOUBLE = 4,
|
||||
DECORATION_STYLE_WAVY = 5
|
||||
};
|
||||
|
||||
/**
|
||||
* Function for painting the decoration lines for the text.
|
||||
* NOTE: aPt, aLineSize, aAscent and aOffset are non-rounded device pixels,
|
||||
|
@ -313,8 +304,8 @@ struct nsCSSRendering {
|
|||
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
||||
* @param aStyle the style of the decoration line (See above
|
||||
* enum names).
|
||||
* @param aStyle the style of the decoration line such as
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_*.
|
||||
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
||||
* underline overflows from the descent space,
|
||||
* the underline should be lifted up as far as
|
||||
|
@ -353,8 +344,8 @@ struct nsCSSRendering {
|
|||
* NS_STYLE_TEXT_DECORATION_UNDERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_OVERLINE or
|
||||
* NS_STYLE_TEXT_DECORATION_LINE_THROUGH.
|
||||
* @param aStyle the style of the decoration line (See above
|
||||
* enum names).
|
||||
* @param aStyle the style of the decoration line such as
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_*.
|
||||
* @param aDescentLimit If aDescentLimit is zero or larger and the
|
||||
* underline overflows from the descent space,
|
||||
* the underline should be lifted up as far as
|
||||
|
|
|
@ -626,6 +626,15 @@ static inline mozilla::css::Side operator++(mozilla::css::Side& side, int) {
|
|||
#define NS_STYLE_TEXT_DECORATION_OVERRIDE_ALL 0x20
|
||||
#define NS_STYLE_TEXT_DECORATION_LINES_MASK (NS_STYLE_TEXT_DECORATION_UNDERLINE | NS_STYLE_TEXT_DECORATION_OVERLINE | NS_STYLE_TEXT_DECORATION_LINE_THROUGH)
|
||||
|
||||
// See nsStyleText
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_NONE 0 // not in CSS spec, mapped to -moz-none
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_DOTTED 1
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_DASHED 2
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_SOLID 3
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE 4
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_WAVY 5
|
||||
#define NS_STYLE_TEXT_DECORATION_STYLE_MAX NS_STYLE_TEXT_DECORATION_STYLE_WAVY
|
||||
|
||||
// See nsStyleText
|
||||
#define NS_STYLE_TEXT_TRANSFORM_NONE 0
|
||||
#define NS_STYLE_TEXT_TRANSFORM_CAPITALIZE 1
|
||||
|
|
|
@ -239,6 +239,8 @@ input > .anonymous-div {
|
|||
/* XXXldb I'm not sure if we really want the 'text-decoration: inherit',
|
||||
but it's needed to make 'text-decoration' "work" on text inputs. */
|
||||
text-decoration: inherit;
|
||||
-moz-text-decoration-color: inherit;
|
||||
-moz-text-decoration-style: inherit;
|
||||
}
|
||||
|
||||
input:disabled,
|
||||
|
|
|
@ -6076,6 +6076,7 @@ nsBlockFrame::PaintTextDecorationLine(gfxContext* aCtx,
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
@ -6096,7 +6097,7 @@ nsBlockFrame::PaintTextDecorationLine(gfxContext* aCtx,
|
|||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, aColor, pt, size,
|
||||
PresContext()->AppUnitsToGfxUnits(aLine->GetAscent()),
|
||||
aOffset, aDecoration, nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
aOffset, aDecoration, aStyle);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -369,6 +369,7 @@ protected:
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
|
|
@ -75,9 +75,9 @@ class nsDisplayTextDecoration : public nsDisplayItem {
|
|||
public:
|
||||
nsDisplayTextDecoration(nsDisplayListBuilder* aBuilder,
|
||||
nsHTMLContainerFrame* aFrame, PRUint8 aDecoration,
|
||||
nscolor aColor, nsLineBox* aLine)
|
||||
nscolor aColor, PRUint8 aStyle, nsLineBox* aLine)
|
||||
: nsDisplayItem(aBuilder, aFrame), mLine(aLine), mColor(aColor),
|
||||
mDecoration(aDecoration) {
|
||||
mDecoration(aDecoration), mStyle(aStyle) {
|
||||
MOZ_COUNT_CTOR(nsDisplayTextDecoration);
|
||||
}
|
||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||
|
@ -100,6 +100,7 @@ private:
|
|||
nsLineBox* mLine;
|
||||
nscolor mColor;
|
||||
PRUint8 mDecoration;
|
||||
PRUint8 mStyle;
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -136,16 +137,16 @@ nsDisplayTextDecoration::Paint(nsDisplayListBuilder* aBuilder,
|
|||
if (mDecoration == NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||
gfxFloat underlineOffset = fontGroup->GetUnderlineOffset();
|
||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||
underlineOffset, ascent,
|
||||
mStyle, underlineOffset, ascent,
|
||||
metrics.underlineSize, mDecoration);
|
||||
} else if (mDecoration == NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||
metrics.maxAscent, ascent,
|
||||
mStyle, metrics.maxAscent, ascent,
|
||||
metrics.underlineSize, mDecoration);
|
||||
} else {
|
||||
f->PaintTextDecorationLine(aCtx->ThebesContext(), pt, mLine, mColor,
|
||||
metrics.strikeoutOffset, ascent,
|
||||
metrics.strikeoutSize, mDecoration);
|
||||
mStyle, metrics.strikeoutOffset,
|
||||
ascent, metrics.strikeoutSize, mDecoration);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -159,10 +160,12 @@ class nsDisplayTextShadow : public nsDisplayItem {
|
|||
public:
|
||||
nsDisplayTextShadow(nsDisplayListBuilder* aBuilder,
|
||||
nsHTMLContainerFrame* aFrame,
|
||||
const PRUint8 aDecoration,
|
||||
const PRUint8 aDecoration, PRUint8 aUnderlineStyle,
|
||||
PRUint8 aOverlineStyle, PRUint8 aStrikeThroughStyle,
|
||||
nsLineBox* aLine)
|
||||
: nsDisplayItem(aBuilder, aFrame), mLine(aLine),
|
||||
mDecorationFlags(aDecoration) {
|
||||
mDecorationFlags(aDecoration), mUnderlineStyle(aUnderlineStyle),
|
||||
mOverlineStyle(aOverlineStyle), mStrikeThroughStyle(aStrikeThroughStyle) {
|
||||
MOZ_COUNT_CTOR(nsDisplayTextShadow);
|
||||
}
|
||||
virtual ~nsDisplayTextShadow() {
|
||||
|
@ -176,6 +179,9 @@ public:
|
|||
private:
|
||||
nsLineBox* mLine;
|
||||
PRUint8 mDecorationFlags;
|
||||
PRUint8 mUnderlineStyle;
|
||||
PRUint8 mOverlineStyle;
|
||||
PRUint8 mStrikeThroughStyle;
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -243,22 +249,20 @@ nsDisplayTextShadow::Paint(nsDisplayListBuilder* aBuilder,
|
|||
gfxSize size(lineWidth, metrics.underlineSize);
|
||||
underlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||
ascent, underlineOffset,
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE, mUnderlineStyle);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
gfxSize size(lineWidth, metrics.underlineSize);
|
||||
overlineRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||
ascent, metrics.maxAscent,
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE, mOverlineStyle);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||
gfxSize size(lineWidth, metrics.strikeoutSize);
|
||||
lineThroughRect = nsCSSRendering::GetTextDecorationRect(presContext, size,
|
||||
ascent, metrics.strikeoutOffset,
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
mStrikeThroughStyle);
|
||||
}
|
||||
|
||||
for (PRUint32 i = shadowList->Length(); i > 0; --i) {
|
||||
|
@ -302,18 +306,19 @@ nsDisplayTextShadow::Paint(nsDisplayListBuilder* aBuilder,
|
|||
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||
underlineOffset, ascent,
|
||||
mUnderlineStyle, underlineOffset, ascent,
|
||||
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_UNDERLINE);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||
metrics.maxAscent, ascent,
|
||||
mOverlineStyle, metrics.maxAscent, ascent,
|
||||
metrics.underlineSize, NS_STYLE_TEXT_DECORATION_OVERLINE);
|
||||
}
|
||||
if (mDecorationFlags & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||
f->PaintTextDecorationLine(shadowCtx, pt, mLine, shadowColor,
|
||||
metrics.strikeoutOffset, ascent,
|
||||
metrics.strikeoutSize, NS_STYLE_TEXT_DECORATION_LINE_THROUGH);
|
||||
mStrikeThroughStyle, metrics.strikeoutOffset,
|
||||
ascent, metrics.strikeoutSize,
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH);
|
||||
}
|
||||
|
||||
contextBoxBlur.DoPaint();
|
||||
|
@ -350,9 +355,11 @@ nsHTMLContainerFrame::DisplayTextDecorations(nsDisplayListBuilder* aBuilder,
|
|||
// behind children, line-through in front. For Quirks mode, see
|
||||
// nsTextFrame::PaintTextDecorations. (See bug 1777.)
|
||||
nscolor underColor, overColor, strikeColor;
|
||||
PRUint8 underStyle, overStyle, strikeStyle;
|
||||
PRUint8 decorations = NS_STYLE_TEXT_DECORATION_NONE;
|
||||
GetTextDecorations(PresContext(), aLine != nsnull, decorations, underColor,
|
||||
overColor, strikeColor);
|
||||
overColor, strikeColor, underStyle, overStyle,
|
||||
strikeStyle);
|
||||
|
||||
if (decorations == NS_STYLE_TEXT_DECORATION_NONE)
|
||||
return NS_OK;
|
||||
|
@ -362,26 +369,27 @@ nsHTMLContainerFrame::DisplayTextDecorations(nsDisplayListBuilder* aBuilder,
|
|||
// list, underneath the text and all decorations.
|
||||
if (GetStyleText()->mTextShadow) {
|
||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextShadow(aBuilder, this, decorations, aLine));
|
||||
nsDisplayTextShadow(aBuilder, this, decorations, underStyle, overStyle,
|
||||
strikeStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
if (decorations & NS_STYLE_TEXT_DECORATION_UNDERLINE) {
|
||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||
underColor, aLine));
|
||||
underColor, underStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
if (decorations & NS_STYLE_TEXT_DECORATION_OVERLINE) {
|
||||
rv = aBelowTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
overColor, aLine));
|
||||
overColor, overStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
if (decorations & NS_STYLE_TEXT_DECORATION_LINE_THROUGH) {
|
||||
rv = aAboveTextDecorations->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayTextDecoration(aBuilder, this, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
strikeColor, aLine));
|
||||
strikeColor, strikeStyle, aLine));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
return NS_OK;
|
||||
|
@ -424,6 +432,7 @@ nsHTMLContainerFrame::PaintTextDecorationLine(
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
@ -442,7 +451,7 @@ nsHTMLContainerFrame::PaintTextDecorationLine(
|
|||
PresContext()->AppUnitsToGfxUnits(bp.top + aPt.y));
|
||||
gfxSize size(PresContext()->AppUnitsToGfxUnits(innerWidth), aSize);
|
||||
nsCSSRendering::PaintDecorationLine(aCtx, aColor, pt, size, aAscent, aOffset,
|
||||
aDecoration, nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
aDecoration, aStyle);
|
||||
}
|
||||
|
||||
/*virtual*/ void
|
||||
|
@ -461,7 +470,10 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
|||
PRUint8& aDecorations,
|
||||
nscolor& aUnderColor,
|
||||
nscolor& aOverColor,
|
||||
nscolor& aStrikeColor)
|
||||
nscolor& aStrikeColor,
|
||||
PRUint8& aUnderStyle,
|
||||
PRUint8& aOverStyle,
|
||||
PRUint8& aStrikeStyle)
|
||||
{
|
||||
aDecorations = NS_STYLE_TEXT_DECORATION_NONE;
|
||||
if (!mStyleContext->HasTextDecorations()) {
|
||||
|
@ -471,13 +483,15 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
|||
}
|
||||
|
||||
if (!aIsBlock) {
|
||||
aDecorations = this->GetStyleTextReset()->mTextDecoration &
|
||||
const nsStyleTextReset* styleTextReset = this->GetStyleTextReset();
|
||||
aDecorations = styleTextReset->mTextDecoration &
|
||||
NS_STYLE_TEXT_DECORATION_LINES_MASK;
|
||||
if (aDecorations) {
|
||||
nscolor color = this->GetVisitedDependentColor(eCSSProperty_color);
|
||||
aUnderColor = color;
|
||||
aOverColor = color;
|
||||
aStrikeColor = color;
|
||||
nscolor color =
|
||||
this->GetVisitedDependentColor(eCSSProperty_text_decoration_color);
|
||||
aUnderColor = aOverColor = aStrikeColor = color;
|
||||
aUnderStyle = aOverStyle = aStrikeStyle =
|
||||
styleTextReset->GetDecorationStyle();
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -491,23 +505,29 @@ nsHTMLContainerFrame::GetTextDecorations(nsPresContext* aPresContext,
|
|||
|
||||
// walk tree
|
||||
for (nsIFrame* frame = this; frame; frame = frame->GetParent()) {
|
||||
PRUint8 decors = frame->GetStyleTextReset()->mTextDecoration & decorMask;
|
||||
const nsStyleTextReset* styleTextReset = frame->GetStyleTextReset();
|
||||
PRUint8 decors = styleTextReset->mTextDecoration & decorMask;
|
||||
if (decors) {
|
||||
// A *new* text-decoration is found.
|
||||
nscolor color = frame->GetVisitedDependentColor(eCSSProperty_color);
|
||||
nscolor color = frame->GetVisitedDependentColor(
|
||||
eCSSProperty_text_decoration_color);
|
||||
PRUint8 style = styleTextReset->GetDecorationStyle();
|
||||
|
||||
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & decors) {
|
||||
aUnderColor = color;
|
||||
aUnderStyle = style;
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
aDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_OVERLINE & decors) {
|
||||
aOverColor = color;
|
||||
aOverStyle = style;
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
aDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & decors) {
|
||||
aStrikeColor = color;
|
||||
aStrikeStyle = style;
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
aDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
}
|
||||
|
|
|
@ -144,6 +144,18 @@ protected:
|
|||
* in aDecoration is set. It is undefined otherwise.
|
||||
* @param aStrikeColor The color of strike-through if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* @param aUnderStyle The style of underline if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* The style is one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* @param aOverStyle The style of overline if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* The style is one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* @param aStrikeStyle The style of strike-through if the appropriate bit
|
||||
* in aDecoration is set. It is undefined otherwise.
|
||||
* The style is one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* NOTE: This function assigns NS_STYLE_TEXT_DECORATION_NONE to
|
||||
* aDecorations for text-less frames. See bug 20163 for
|
||||
* details.
|
||||
|
@ -153,7 +165,10 @@ protected:
|
|||
PRUint8& aDecorations,
|
||||
nscolor& aUnderColor,
|
||||
nscolor& aOverColor,
|
||||
nscolor& aStrikeColor);
|
||||
nscolor& aStrikeColor,
|
||||
PRUint8& aUnderStyle,
|
||||
PRUint8& aOverStyle,
|
||||
PRUint8& aStrikeStyle);
|
||||
|
||||
/**
|
||||
* Function that does the actual drawing of the textdecoration.
|
||||
|
@ -161,6 +176,8 @@ protected:
|
|||
* @param aCtx the Thebes graphics context to draw on
|
||||
* @param aLine the line, or nsnull if this is an inline frame
|
||||
* @param aColor the color of the text-decoration
|
||||
* @param aStyle the style of the text-decoration, i.e., one of
|
||||
* NS_STYLE_TEXT_DECORATION_STYLE_* consts.
|
||||
* @param aAscent ascent of the font from which the
|
||||
* text-decoration was derived.
|
||||
* @param aOffset distance *above* baseline where the
|
||||
|
@ -177,6 +194,7 @@ protected:
|
|||
const nsPoint& aPt,
|
||||
nsLineBox* aLine,
|
||||
nscolor aColor,
|
||||
PRUint8 aStyle,
|
||||
gfxFloat aOffset,
|
||||
gfxFloat aAscent,
|
||||
gfxFloat aSize,
|
||||
|
|
|
@ -432,13 +432,19 @@ protected:
|
|||
|
||||
struct TextDecorations {
|
||||
PRUint8 mDecorations;
|
||||
PRUint8 mOverStyle;
|
||||
PRUint8 mUnderStyle;
|
||||
PRUint8 mStrikeStyle;
|
||||
nscolor mOverColor;
|
||||
nscolor mUnderColor;
|
||||
nscolor mStrikeColor;
|
||||
|
||||
TextDecorations() :
|
||||
mDecorations(0), mOverColor(NS_RGB(0, 0, 0)),
|
||||
mUnderColor(NS_RGB(0, 0, 0)), mStrikeColor(NS_RGB(0, 0, 0))
|
||||
mDecorations(0), mOverStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||
mUnderStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||
mStrikeStyle(NS_STYLE_TEXT_DECORATION_STYLE_SOLID),
|
||||
mOverColor(NS_RGB(0, 0, 0)), mUnderColor(NS_RGB(0, 0, 0)),
|
||||
mStrikeColor(NS_RGB(0, 0, 0))
|
||||
{ }
|
||||
|
||||
PRBool HasDecorationlines() {
|
||||
|
|
|
@ -3465,15 +3465,6 @@ static StyleIDs SelectionStyleIDs[] = {
|
|||
nsILookAndFeel::eMetricFloat_SpellCheckerUnderlineRelativeSize }
|
||||
};
|
||||
|
||||
static PRUint8 sUnderlineStyles[] = {
|
||||
nsCSSRendering::DECORATION_STYLE_NONE, // NS_UNDERLINE_STYLE_NONE 0
|
||||
nsCSSRendering::DECORATION_STYLE_DOTTED, // NS_UNDERLINE_STYLE_DOTTED 1
|
||||
nsCSSRendering::DECORATION_STYLE_DASHED, // NS_UNDERLINE_STYLE_DASHED 2
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID, // NS_UNDERLINE_STYLE_SOLID 3
|
||||
nsCSSRendering::DECORATION_STYLE_DOUBLE, // NS_UNDERLINE_STYLE_DOUBLE 4
|
||||
nsCSSRendering::DECORATION_STYLE_WAVY // NS_UNDERLINE_STYLE_WAVY 5
|
||||
};
|
||||
|
||||
void
|
||||
nsTextPaintStyle::InitSelectionStyle(PRInt32 aIndex)
|
||||
{
|
||||
|
@ -3546,9 +3537,9 @@ nsTextPaintStyle::GetSelectionUnderline(nsPresContext* aPresContext,
|
|||
|
||||
look->GetColor(styleID.mLine, color);
|
||||
look->GetMetric(styleID.mLineStyle, style);
|
||||
if (!NS_IS_VALID_UNDERLINE_STYLE(style)) {
|
||||
if (style > NS_STYLE_TEXT_DECORATION_STYLE_MAX) {
|
||||
NS_ERROR("Invalid underline style value is specified");
|
||||
style = NS_UNDERLINE_STYLE_SOLID;
|
||||
style = NS_STYLE_TEXT_DECORATION_STYLE_SOLID;
|
||||
}
|
||||
look->GetMetric(styleID.mLineRelativeSize, size);
|
||||
|
||||
|
@ -3558,9 +3549,9 @@ nsTextPaintStyle::GetSelectionUnderline(nsPresContext* aPresContext,
|
|||
*aLineColor = color;
|
||||
}
|
||||
*aRelativeSize = size;
|
||||
*aStyle = sUnderlineStyles[style];
|
||||
*aStyle = style;
|
||||
|
||||
return sUnderlineStyles[style] != nsCSSRendering::DECORATION_STYLE_NONE &&
|
||||
return style != NS_STYLE_TEXT_DECORATION_STYLE_NONE &&
|
||||
color != NS_TRANSPARENT &&
|
||||
size > 0.0f;
|
||||
}
|
||||
|
@ -4270,13 +4261,15 @@ nsTextFrame::GetTextDecorations(nsPresContext* aPresContext)
|
|||
// This handles the <a href="blah.html"><font color="green">La
|
||||
// la la</font></a> case. The link underline should be green.
|
||||
useOverride = PR_TRUE;
|
||||
overrideColor = context->GetVisitedDependentColor(eCSSProperty_color);
|
||||
overrideColor = context->GetVisitedDependentColor(
|
||||
eCSSProperty_text_decoration_color);
|
||||
}
|
||||
|
||||
// FIXME: see above (remove this check)
|
||||
PRUint8 useDecorations = decorMask & styleText->mTextDecoration;
|
||||
if (useDecorations) {// a decoration defined here
|
||||
nscolor color = context->GetVisitedDependentColor(eCSSProperty_color);
|
||||
nscolor color = context->GetVisitedDependentColor(
|
||||
eCSSProperty_text_decoration_color);
|
||||
|
||||
// FIXME: We also need to record the thickness and position
|
||||
// metrics appropriate to this element (at least in standards
|
||||
|
@ -4289,16 +4282,19 @@ nsTextFrame::GetTextDecorations(nsPresContext* aPresContext)
|
|||
// This way we move the decorations for relative positioning.
|
||||
if (NS_STYLE_TEXT_DECORATION_UNDERLINE & useDecorations) {
|
||||
decorations.mUnderColor = useOverride ? overrideColor : color;
|
||||
decorations.mUnderStyle = styleText->GetDecorationStyle();
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_OVERLINE & useDecorations) {
|
||||
decorations.mOverColor = useOverride ? overrideColor : color;
|
||||
decorations.mOverStyle = styleText->GetDecorationStyle();
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_OVERLINE;
|
||||
}
|
||||
if (NS_STYLE_TEXT_DECORATION_LINE_THROUGH & useDecorations) {
|
||||
decorations.mStrikeColor = useOverride ? overrideColor : color;
|
||||
decorations.mStrikeStyle = styleText->GetDecorationStyle();
|
||||
decorMask &= ~NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
decorations.mDecorations |= NS_STYLE_TEXT_DECORATION_LINE_THROUGH;
|
||||
}
|
||||
|
@ -4393,8 +4389,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
|||
size.height = fontMetrics.underlineSize;
|
||||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, lineColor, pt, size, ascent, fontMetrics.maxAscent,
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_OVERLINE, decorations.mOverStyle);
|
||||
}
|
||||
if (decorations.HasUnderline()) {
|
||||
lineColor = aOverrideColor ? *aOverrideColor : decorations.mUnderColor;
|
||||
|
@ -4402,8 +4397,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
|||
gfxFloat offset = aProvider.GetFontGroup()->GetUnderlineOffset();
|
||||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, lineColor, pt, size, ascent, offset,
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_UNDERLINE, decorations.mUnderStyle);
|
||||
}
|
||||
if (decorations.HasStrikeout()) {
|
||||
lineColor = aOverrideColor ? *aOverrideColor : decorations.mStrikeColor;
|
||||
|
@ -4411,8 +4405,7 @@ nsTextFrame::PaintTextDecorations(gfxContext* aCtx, const gfxRect& aDirtyRect,
|
|||
gfxFloat offset = fontMetrics.strikeoutOffset;
|
||||
nsCSSRendering::PaintDecorationLine(
|
||||
aCtx, lineColor, pt, size, ascent, offset,
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
nsCSSRendering::DECORATION_STYLE_SOLID);
|
||||
NS_STYLE_TEXT_DECORATION_LINE_THROUGH, decorations.mStrikeStyle);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4440,30 +4433,6 @@ static const SelectionType SelectionTypesWithDecorations =
|
|||
nsISelectionController::SELECTION_IME_CONVERTEDTEXT |
|
||||
nsISelectionController::SELECTION_IME_SELECTEDCONVERTEDTEXT;
|
||||
|
||||
static PRUint8
|
||||
GetTextDecorationStyle(const nsTextRangeStyle &aRangeStyle)
|
||||
{
|
||||
NS_PRECONDITION(aRangeStyle.IsLineStyleDefined(),
|
||||
"aRangeStyle.mLineStyle have to be defined");
|
||||
switch (aRangeStyle.mLineStyle) {
|
||||
case nsTextRangeStyle::LINESTYLE_NONE:
|
||||
return nsCSSRendering::DECORATION_STYLE_NONE;
|
||||
case nsTextRangeStyle::LINESTYLE_SOLID:
|
||||
return nsCSSRendering::DECORATION_STYLE_SOLID;
|
||||
case nsTextRangeStyle::LINESTYLE_DOTTED:
|
||||
return nsCSSRendering::DECORATION_STYLE_DOTTED;
|
||||
case nsTextRangeStyle::LINESTYLE_DASHED:
|
||||
return nsCSSRendering::DECORATION_STYLE_DASHED;
|
||||
case nsTextRangeStyle::LINESTYLE_DOUBLE:
|
||||
return nsCSSRendering::DECORATION_STYLE_DOUBLE;
|
||||
case nsTextRangeStyle::LINESTYLE_WAVY:
|
||||
return nsCSSRendering::DECORATION_STYLE_WAVY;
|
||||
default:
|
||||
NS_WARNING("Requested underline style is not valid");
|
||||
return nsCSSRendering::DECORATION_STYLE_SOLID;
|
||||
}
|
||||
}
|
||||
|
||||
static gfxFloat
|
||||
ComputeSelectionUnderlineHeight(nsPresContext* aPresContext,
|
||||
const gfxFont::Metrics& aFontMetrics,
|
||||
|
@ -4549,7 +4518,7 @@ static void DrawSelectionDecorations(gfxContext* aContext, SelectionType aType,
|
|||
if (aRangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
||||
return;
|
||||
}
|
||||
style = GetTextDecorationStyle(aRangeStyle);
|
||||
style = aRangeStyle.mLineStyle;
|
||||
relativeSize = aRangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
||||
} else if (!weDefineSelectionUnderline) {
|
||||
// There is no underline style definition.
|
||||
|
@ -5358,7 +5327,7 @@ nsTextFrame::CombineSelectionUnderlineRect(nsPresContext* aPresContext,
|
|||
rangeStyle.mLineStyle == nsTextRangeStyle::LINESTYLE_NONE) {
|
||||
continue;
|
||||
}
|
||||
style = GetTextDecorationStyle(rangeStyle);
|
||||
style = rangeStyle.mLineStyle;
|
||||
relativeSize = rangeStyle.mIsBoldLine ? 2.0f : 1.0f;
|
||||
} else if (!nsTextPaintStyle::GetSelectionUnderline(aPresContext, index,
|
||||
nsnull, &relativeSize,
|
||||
|
|
|
@ -21,7 +21,7 @@ include backgrounds/reftest.list
|
|||
include bidi/reftest.list
|
||||
|
||||
# border-image
|
||||
include border-image/reftest.list
|
||||
skip-if(Android) include border-image/reftest.list
|
||||
|
||||
# border-radius/
|
||||
include border-radius/reftest.list
|
||||
|
@ -33,10 +33,10 @@ include box-ordinal/reftest.list
|
|||
include box-properties/reftest.list
|
||||
|
||||
# box-shadow/
|
||||
include box-shadow/reftest.list
|
||||
skip-if(Android) include box-shadow/reftest.list
|
||||
|
||||
# bugs/
|
||||
include bugs/reftest.list
|
||||
skip-if(Android) include bugs/reftest.list
|
||||
|
||||
# canvas 2D
|
||||
include canvas/reftest.list
|
||||
|
@ -51,10 +51,10 @@ include css-charset/reftest.list
|
|||
include css-default/reftest.list
|
||||
|
||||
# css :disable tests
|
||||
include css-disabled/reftest.list
|
||||
skip-if(Android) include css-disabled/reftest.list
|
||||
|
||||
# css :enable tests
|
||||
include css-enabled/reftest.list
|
||||
skip-if(Android) include css-enabled/reftest.list
|
||||
|
||||
# css @import tests
|
||||
include css-import/reftest.list
|
||||
|
@ -81,10 +81,10 @@ include css-required/reftest.list
|
|||
include css-optional/reftest.list
|
||||
|
||||
# css valid
|
||||
include css-valid/reftest.list
|
||||
skip-if(Android) include css-valid/reftest.list
|
||||
|
||||
# css invalid
|
||||
include css-invalid/reftest.list
|
||||
skip-if(Android) include css-invalid/reftest.list
|
||||
|
||||
# css-submit-invalid
|
||||
include css-submit-invalid/reftest.list
|
||||
|
@ -93,10 +93,10 @@ include css-submit-invalid/reftest.list
|
|||
include css-transitions/reftest.list
|
||||
|
||||
# css :-moz-ui-invalid
|
||||
include css-ui-invalid/reftest.list
|
||||
skip-if(Android) include css-ui-invalid/reftest.list
|
||||
|
||||
# css :-moz-ui-valid
|
||||
include css-ui-valid/reftest.list
|
||||
skip-if(Android) include css-ui-valid/reftest.list
|
||||
|
||||
# css values and units
|
||||
include css-valuesandunits/reftest.list
|
||||
|
@ -129,7 +129,7 @@ include editor/reftest.list
|
|||
include generated-content/reftest.list
|
||||
|
||||
# first-letter/
|
||||
include first-letter/reftest.list
|
||||
skip-if(Android) include first-letter/reftest.list
|
||||
|
||||
# first-line/
|
||||
include first-line/reftest.list
|
||||
|
@ -147,7 +147,7 @@ include font-features/reftest.list
|
|||
include font-matching/reftest.list
|
||||
|
||||
# forms
|
||||
include forms/reftest.list
|
||||
skip-if(Android) include forms/reftest.list
|
||||
|
||||
# gfx
|
||||
include ../../gfx/tests/reftest/reftest.list
|
||||
|
@ -186,7 +186,7 @@ include margin-collapsing/reftest.list
|
|||
include marquee/reftest.list
|
||||
|
||||
# native-theme/
|
||||
include native-theme/reftest.list
|
||||
skip-if(Android) include native-theme/reftest.list
|
||||
|
||||
# netwerk/
|
||||
include ../../netwerk/test/reftest/reftest.list
|
||||
|
@ -250,7 +250,7 @@ include text-decoration/reftest.list
|
|||
include text-indent/reftest.list
|
||||
|
||||
# text-shadow/
|
||||
include text-shadow/reftest.list
|
||||
skip-if(Android) include text-shadow/reftest.list
|
||||
|
||||
# theme (pinstripe)
|
||||
include ../../toolkit/themes/pinstripe/reftests/reftest.list
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
<p style="color: #008000;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: #0000FF;">This blue text has green decoration lines</span>
|
||||
</p>
|
||||
<p style="color: yellow;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: red;">This red text has yellow decoration lines</span>
|
||||
</p>
|
||||
<p style="color: red; text-decoration: underline line-through overline;">
|
||||
<span style="color: #0000FF">This blue text has red lines</span>
|
||||
</p>
|
||||
<p style="color: orange;">
|
||||
This orange text has transparent lines
|
||||
</p>
|
||||
<p>
|
||||
Here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: blue;">
|
||||
this blue text has green decoration lines</span></span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: red;">
|
||||
This is red paragraph and here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: red;">here are green decoration lines</span></span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: purple;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is purple paragraph and here are decoration lines of current color, but
|
||||
<span style="font-size: 2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: purple;">here are red decoration lines</span></span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is green paragraph and here are decoration lines of current color, and
|
||||
<span style="font-size: 2em;">
|
||||
here is specified red decoration color but has current color lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: blue;">
|
||||
here is red text with blue decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph and decoration color is specified as green,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
here is red text with green decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
|
@ -0,0 +1,73 @@
|
|||
<p style="color: blue;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
This blue text has green decoration lines
|
||||
</p>
|
||||
<p style="color: #ff0000;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: #ffff00;">
|
||||
This red text has yellow decoration lines
|
||||
</p>
|
||||
<p style="color: rgb(0%, 0%, 100%);
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: rgb(100%, 0%, 0%);">
|
||||
This blue text has red lines
|
||||
</p>
|
||||
<p style="color: orange;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: transparent;">
|
||||
This orange text has transparent lines
|
||||
</p>
|
||||
<p>
|
||||
Here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: blue;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
this blue text has green decoration lines</span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: red;">
|
||||
This is red paragraph and here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
here are green decoration lines</span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: purple;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is purple paragraph and here are decoration lines of current color, but
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: red;">
|
||||
here are red decoration lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is green paragraph and here are decoration lines of current color, and
|
||||
<span style="font-size: 2em;
|
||||
-moz-text-decoration-color: red;">
|
||||
here is specified red decoration color but has current color lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: inherit;">
|
||||
here is red text with blue decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;
|
||||
-moz-text-decoration-color: green;">
|
||||
This is blue paragraph and decoration color is specified as green,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: inherit;">
|
||||
here is red text with green decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="color: #008000;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: #0000FF;">This blue text has green decoration lines</span>
|
||||
</p>
|
||||
<p style="color: yellow;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: red;">This red text has yellow decoration lines</span>
|
||||
</p>
|
||||
<p style="color: red;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: #0000FF">This blue text has red lines</span>
|
||||
</p>
|
||||
<p style="color: orange;">
|
||||
This orange text has transparent lines
|
||||
</p>
|
||||
<p>
|
||||
Here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: blue;">
|
||||
this blue text has green decoration lines</span></span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: red;">
|
||||
This is red paragraph and here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: red;">here are green decoration lines</span></span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: purple;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is purple paragraph and here are decoration lines of current color, but
|
||||
<span style="font-size: 2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;">
|
||||
<span style="color: purple;">here are red decoration lines</span></span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is green paragraph and here are decoration lines of current color, and
|
||||
<span style="font-size: 2em;">
|
||||
here is specified red decoration color but has current color lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: blue;">
|
||||
here is red text with blue decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph and decoration color is specified as green,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
here is red text with green decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="color: blue;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
This blue text has green decoration lines
|
||||
</p>
|
||||
<p style="color: #ff0000;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: #ffff00;">
|
||||
This red text has yellow decoration lines
|
||||
</p>
|
||||
<p style="color: rgb(0%, 0%, 100%);
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: rgb(100%, 0%, 0%);">
|
||||
This blue text has red lines
|
||||
</p>
|
||||
<p style="color: orange;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: transparent;">
|
||||
This orange text has transparent lines
|
||||
</p>
|
||||
<p>
|
||||
Here is no decoration lines, but
|
||||
<span style="font-size: 2em; color: blue;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
this blue text has green decoration lines</span>,
|
||||
and here is no decoration lines too.
|
||||
</p>
|
||||
<p style="color: red;">
|
||||
This is red paragraph and here is no decoration lines, but
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: green;">
|
||||
here are green decoration lines</span>,
|
||||
and here is no decoration lines too.</p>
|
||||
<p style="color: purple;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is purple paragraph and here are decoration lines of current color, but
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: red;">
|
||||
here are red decoration lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: green;
|
||||
text-decoration: underline line-through overline;">
|
||||
This is green paragraph and here are decoration lines of current color, and
|
||||
<span style="font-size: 2em;
|
||||
-moz-text-decoration-color: red;">
|
||||
here is specified red decoration color but has current color lines</span>,
|
||||
and here are current color decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;">
|
||||
This is blue paragraph,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: inherit;">
|
||||
here is red text with blue decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
||||
<p style="color: blue;
|
||||
-moz-text-decoration-color: green;">
|
||||
This is blue paragraph and decoration color is specified as green,
|
||||
<span style="font-size:2em;
|
||||
color: red;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-color: inherit;">
|
||||
here is red text with green decoration lines</span>,
|
||||
and here is blue text without decoration lines.
|
||||
</p>
|
|
@ -0,0 +1,42 @@
|
|||
<p>
|
||||
Here is specified the decoration style as dotted but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration: solid;">
|
||||
here has solid decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p>
|
||||
Here is specified the decoration style as dashed but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: dashed;">
|
||||
here has inherited decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p>
|
||||
<span style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: dotted;">
|
||||
Here has dotted decoration lines,
|
||||
</span><span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: wavy;">
|
||||
here has wavy decoration
|
||||
lines</span><span style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: dotted;">,
|
||||
and here has dotted decoration lines.</span>
|
||||
</p>
|
||||
<p>
|
||||
<span style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: double;">
|
||||
Here has double decoration lines,
|
||||
</span><span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: double;">
|
||||
here is specified as dashed decoration lines but should be
|
||||
ignored</span><span style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: double;">,
|
||||
and here has double decoration lines.</span>
|
||||
</p>
|
|
@ -0,0 +1,33 @@
|
|||
<p style="-moz-text-decoration-style: dotted;">
|
||||
Here is specified the decoration style as dotted but no decoration lines, however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;">
|
||||
here has solid decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p style="-moz-text-decoration-style: dashed;">
|
||||
Here is specified the decoration style as dashed but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: inherit;">
|
||||
here has inherited decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: dotted;">
|
||||
Here has dotted decoration lines,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: wavy;">
|
||||
here has wavy decoration lines</span>,
|
||||
and here has dotted decoration lines.
|
||||
</p>
|
||||
<p style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: double;">
|
||||
Here has double decoration lines,
|
||||
<span style="font-size: 2em;
|
||||
-moz-text-decoration-style: dashed;">
|
||||
here is specified as dashed decoration lines but should be ignored</span>,
|
||||
and here has double decoration lines.
|
||||
</p>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<p>
|
||||
Here is specified the decoration style as dotted but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration: solid;">
|
||||
here has solid decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p>
|
||||
Here is specified the decoration style as dashed but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: dashed;">
|
||||
here has inherited decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: double;">
|
||||
Here has double decoration lines,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: none;">
|
||||
here is specified as dashed decoration lines but should be ignored</span>,
|
||||
and here has double decoration lines.
|
||||
</p>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="-moz-text-decoration-style: dotted;">
|
||||
Here is specified the decoration style as dotted but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;">
|
||||
here has solid decoration lines</span>, and here has no decoration lines.
|
||||
</p>
|
||||
<p style="-moz-text-decoration-style: dashed;">
|
||||
Here is specified the decoration style as dashed but no decoration lines,
|
||||
however,
|
||||
<span style="font-size: 2em;
|
||||
text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: inherit;">
|
||||
here has inherited decoration lines</span>,
|
||||
and here has no decoration lines.
|
||||
</p>
|
||||
<p style="text-decoration: underline line-through overline;
|
||||
-moz-text-decoration-style: double;">
|
||||
Here has double decoration lines,
|
||||
<span style="font-size: 2em;
|
||||
-moz-text-decoration-style: dashed;">
|
||||
here is specified as dashed decoration lines but should be ignored</span>,
|
||||
and here has double decoration lines.
|
||||
</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: line-through; -moz-text-decoration-style: dashed;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: line-through; -moz-text-decoration-style: dashed;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: line-through; -moz-text-decoration-style: dotted;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: line-through; -moz-text-decoration-style: dotted;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: line-through; -moz-text-decoration-style: double;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: line-through; -moz-text-decoration-style: double;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: line-through;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: line-through; -moz-text-decoration-style: solid;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: line-through; -moz-text-decoration-style: solid;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: line-through;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: line-through; -moz-text-decoration-style: wavy;">This paragraph has line-through</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: line-through; -moz-text-decoration-style: wavy;">This paragraph has line-through</p>
|
|
@ -0,0 +1 @@
|
|||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dashed;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dashed;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
|||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dotted;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: dotted;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
|||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: double;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: double;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
|||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
|||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: solid;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: solid;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
|||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: wavy;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p>This paragraph has no decoration lines, but <span style="text-decoration: line-through; -moz-text-decoration-style: wavy;">here has line-through</span>, and here has no decoration lines.</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: overline; -moz-text-decoration-style: dashed;">This paragraph has overline</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: overline; -moz-text-decoration-style: dashed;">This paragraph has overline</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: overline; -moz-text-decoration-style: dotted;">This paragraph has overline</p>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration: overline; -moz-text-decoration-style: dotted;">This paragraph has overline</p>
|
|
@ -0,0 +1 @@
|
|||
<p style="text-decoration: overline; -moz-text-decoration-style: double;">This paragraph has overline</p>
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче