gecko-dev/dom/xml/nsXMLPrettyPrinter.h
Timothy Guan-tin Chien b9a40e754b Bug 1437956 - Pretty print XML with Shadow DOM r=smaug
This patch puts the transformed pretty print DOM into a Shadow DOM.
The stylesheet is loaded with an @import in a <style> block, so the
monospace stylesheet had to be left out.

The XBL binding is kept, pending removal when Shadow DOM ships.
It's still needed to handle the case when Shadow DOM is pref'd off too.

MozReview-Commit-ID: DQRsXB8tumF

--HG--
extra : rebase_source : 6edc3d82392af4d98de454a5228328379a0fb7ee
2018-06-01 17:45:11 +08:00

60 lines
1.7 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 nsXMLPrettyPrinter_h__
#define nsXMLPrettyPrinter_h__
#include "nsStubDocumentObserver.h"
#include "nsCOMPtr.h"
class nsIDocument;
class nsXMLPrettyPrinter : public nsStubDocumentObserver
{
public:
nsXMLPrettyPrinter();
NS_DECL_ISUPPORTS
// nsIMutationObserver
NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED
/**
* This will prettyprint the document if the document is loaded in a
* displayed window.
*
* @param aDocument document to prettyprint
* @param [out] aDidPrettyPrint if true, and error not returned, actually
* went ahead with prettyprinting the document.
*/
nsresult PrettyPrint(nsIDocument* aDocument, bool* aDidPrettyPrint);
/**
* Unhook the prettyprinter
*/
void Unhook();
private:
virtual ~nsXMLPrettyPrinter();
/**
* Signals for unhooking by setting mUnhookPending if the node changed is
* not in the shadow root tree nor in anonymous content.
*
* @param aContent content that has changed
*/
void MaybeUnhook(nsIContent* aContent);
nsIDocument* mDocument; //weak. Set as long as we're observing the document
bool mUnhookPending;
};
nsresult NS_NewXMLPrettyPrinter(nsXMLPrettyPrinter** aPrinter);
#endif //nsXMLPrettyPrinter_h__