dom/bindings/Date.h
author Bob Owen <bobowencode@gmail.com>
Tue, 05 Jan 2016 10:08:57 +0000
changeset 278418 d765b7934fae4c1389ec4d860988a21437aed075
parent 257154 404e5944dc5901b62eeaf450648203d28a77aa07
child 448947 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1156742 Part 7: Refactor nsDeviceContext.cpp to use printing surface for size and nsIDeviceContextSpec for DPI and scale. r=roc These changes are to make using an off screen surface behind our DrawTarget in the child easier. It still creates the real printing surface for some of the calculations, removing this will be required for future tightening of the sandbox.

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */

/* Representation for dates. */

#ifndef mozilla_dom_Date_h
#define mozilla_dom_Date_h

#include "js/Date.h"
#include "js/TypeDecls.h"

namespace mozilla {
namespace dom {

class Date
{
public:
  Date() {}
  explicit Date(JS::ClippedTime aMilliseconds)
    : mMsecSinceEpoch(aMilliseconds)
  {}

  bool IsUndefined() const
  {
    return !mMsecSinceEpoch.isValid();
  }

  JS::ClippedTime TimeStamp() const
  {
    return mMsecSinceEpoch;
  }

  // Returns an integer in the range [-8.64e15, +8.64e15] (-0 excluded), *or*
  // returns NaN.  DO NOT ASSUME THIS IS FINITE!
  double ToDouble() const
  {
    return mMsecSinceEpoch.toDouble();
  }

  void SetTimeStamp(JS::ClippedTime aMilliseconds)
  {
    mMsecSinceEpoch = aMilliseconds;
  }

  // Can return false if CheckedUnwrap fails.  This will NOT throw;
  // callers should do it as needed.
  bool SetTimeStamp(JSContext* aCx, JSObject* aObject);

  bool ToDateObject(JSContext* aCx, JS::MutableHandle<JS::Value> aRval) const;

private:
  JS::ClippedTime mMsecSinceEpoch;
};

} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_Date_h