layout/printing/nsPrintObject.h
author Bobby Holley <bobbyholley@gmail.com>
Fri, 19 Dec 2014 11:39:15 -0800
changeset 246527 4c38dda0688052e7074c04a7a25065cb7e3246c6
parent 136277 c1e0d7e7b16461eafdbdb3c0f0b4e0e9f39c3bcc
child 248684 86924ac6a94a9147bcae518239d7a33b5981062b
permissions -rw-r--r--
Bug 1109437 - Schedule the state machine thread in MediaSourceDecoder::Load. r=cpearce This is necessary to get the state machine moving after it's initialized. MediaDecoder::Load does this, but it looks like we missed this in the override. So the current code relies on the ScheduleStateMachine call at the end of TrackBuffer::AppendData to get things rolling. We're going to be removing that call, so we need to fix this.

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */
#ifndef nsPrintObject_h___
#define nsPrintObject_h___

#include "mozilla/Attributes.h"

// Interfaces
#include "nsCOMPtr.h"
#include "nsIPresShell.h"
#include "nsStyleSet.h"
#include "nsViewManager.h"
#include "nsIDocShell.h"
#include "nsIDocShellTreeOwner.h"

class nsIContent;
class nsIDocument;
class nsPresContext;

// nsPrintObject Document Type
enum PrintObjectType  {eDoc = 0, eFrame = 1, eIFrame = 2, eFrameSet = 3};

//---------------------------------------------------
//-- nsPrintObject Class
//---------------------------------------------------
class nsPrintObject
{

public:
  nsPrintObject();
  ~nsPrintObject(); // non-virtual

  // Methods
  nsresult Init(nsIDocShell* aDocShell, nsIDOMDocument* aDoc,
                bool aPrintPreview);

  bool IsPrintable()  { return !mDontPrint; }
  void   DestroyPresentation();

  // Data Members
  nsCOMPtr<nsIDocShell>    mDocShell;
  nsCOMPtr<nsIDocShellTreeOwner> mTreeOwner;
  nsCOMPtr<nsIDocument>    mDocument;

  nsRefPtr<nsPresContext>  mPresContext;
  nsCOMPtr<nsIPresShell>   mPresShell;
  nsRefPtr<nsViewManager> mViewManager;

  nsCOMPtr<nsIContent>     mContent;
  PrintObjectType  mFrameType;
  
  nsTArray<nsPrintObject*> mKids;
  nsPrintObject*   mParent;
  bool             mHasBeenPrinted;
  bool             mDontPrint;
  bool             mPrintAsIs;
  bool             mInvisible;        // Indicates PO is set to not visible by CSS
  bool             mPrintPreview;
  bool             mDidCreateDocShell;
  float            mShrinkRatio;
  float            mZoomRatio;

private:
  nsPrintObject& operator=(const nsPrintObject& aOther) MOZ_DELETE;
};



#endif /* nsPrintObject_h___ */