storage/Variant_inl.h
author Kartikaya Gupta <kgupta@mozilla.com>
Tue, 08 May 2018 09:16:29 -0400
changeset 417340 0bb3414bd6af644addd5ea6c4b349c88e3a4a7b9
parent 244682 dd79977a3286d947aff8e270245d05c05e676964
child 439132 079e9287971001d839030ce8e60bb175018da76c
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 et lcs=trail\:.,tab\:>~ :
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/**
 * Note: This file is included by Variant.h.
 */

#ifndef mozilla_storage_Variant_h__
#error "Do not include this file directly!"
#endif

namespace mozilla {
namespace storage {

////////////////////////////////////////////////////////////////////////////////
//// Variant_base

inline NS_IMPL_ADDREF(Variant_base)
inline NS_IMPL_RELEASE(Variant_base)
inline NS_IMPL_QUERY_INTERFACE(
  Variant_base,
  nsIVariant
)

////////////////////////////////////////////////////////////////////////////////
//// nsIVariant

inline
NS_IMETHODIMP
Variant_base::GetDataType(uint16_t *_type)
{
  NS_ENSURE_ARG_POINTER(_type);
  *_type = nsIDataType::VTYPE_VOID;
  return NS_OK;
}

inline
NS_IMETHODIMP
Variant_base::GetAsInt32(int32_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsInt64(int64_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsDouble(double *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsAUTF8String(nsACString &)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsAString(nsAString &)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsArray(uint16_t *,
                         nsIID *,
                         uint32_t *,
                         void **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsInt8(uint8_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsInt16(int16_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsUint8(uint8_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsUint16(uint16_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsUint32(uint32_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsUint64(uint64_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsFloat(float *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsBool(bool *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsChar(char *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsWChar(char16_t *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsID(nsID *)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsDOMString(nsAString &)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsString(char **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsWString(char16_t **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsISupports(nsISupports **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsInterface(nsIID **,
                             void **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsACString(nsACString &)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsStringWithSize(uint32_t *,
                                  char **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsWStringWithSize(uint32_t *,
                                   char16_t **)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

inline
NS_IMETHODIMP
Variant_base::GetAsJSVal(JS::MutableHandle<JS::Value>)
{
  return NS_ERROR_CANNOT_CONVERT_DATA;
}

} // namespace storage
} // namespace mozilla