author Kartikaya Gupta <>
Tue, 08 May 2018 09:16:29 -0400
changeset 417340 0bb3414bd6af644addd5ea6c4b349c88e3a4a7b9
parent 244681 ad01543457e739b4eee7a245e16734a3ecfd10ad
child 474066 41f28d23024ebecf5445896cd3b6b39a6b650a9d
permissions -rw-r--r--
Bug 1458598 - Override scrollframes with their descendant reference frames. r=mstange The test case has a fixed item A inside a scrollframe B which is inside a reference frame C which is inside the root scrollframe D. The ClipManager code currently uses D's scrollid as the scrolling ancestor for A, because the gecko display list's ASR is set up that way. However, we really want to set C as the scrolling ancestor, because otherwise the item A gets hoisted out of C and the transform from C doesn't get applied to it. This patch ensures that when we enter C, we install an override so that anything that would have used D's scrollid ends up using C's, which results in the correct behaviour. MozReview-Commit-ID: 31tscfT4xWW

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: sw=2 ts=2 sts=2 expandtab
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at */

#include "mozIStorageBaseStatement.idl"

 * An asynchronous SQL statement.  This differs from mozIStorageStatement by
 * only being usable for asynchronous execution.  (mozIStorageStatement can
 * be used for both synchronous and asynchronous purposes.)  This specialization
 * for asynchronous operation allows us to avoid needing to acquire
 * synchronization primitives also used by the asynchronous execution thread.
 * In contrast, mozIStorageStatement may need to acquire the primitives and
 * consequently can cause the main thread to lock for extended intervals while
 * the asynchronous thread performs some long-running operation.
[scriptable, uuid(52e49370-3b2e-4a27-a3fc-79e20ad4056b)]
interface mozIStorageAsyncStatement : mozIStorageBaseStatement {
   * 'params' provides a magic JS helper that lets you assign parameters by
   * name.  Unlike the helper on mozIStorageStatement, you cannot enumerate
   * in order to find out what parameters are legal.
   * This does not work for BLOBs.  You must use an explicit binding API for
   * that.
   * example:
   * = 1;
   *  stmt.params["bar"] = 2;
   *  let argName = "baz";
   *  stmt.params[argName] = 3;
   * readonly attribute nsIMagic params;