mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
a2174af992
- Bug 1143038 - Use AppConstants in tabbrowser.xml (r=gavin) (7974d0be4) - Bug 1087726: Make JS callers of ios.newChannel call ios.newChannel2 in browser/ (r=gijs) (995267699) - Bug 1149037 - Make nsLayoutUtils::ComputeSizeForDrawing* take a CSSIntSize param instead of a unit-less nsIntSize. r=roc (34aebc313) - Bug 1149215 - Remove nsLayoutUtils::GetWholeImageDestination that use unitless nsIntSize. r=dholbert (dba5c0392) - Bug 1149222 part 1 - Make nsLayoutUtils::DrawBackgroundImage and SVGImageContext use CSSIntSize instead of unitless nsIntSize. r=dholbert (32052dcf6) - Bug 1149222 part 2 - Make nsSVGImageFrame::PaintSVG use LayoutDeviceSize & LayoutDevicePixel::ToAppUnits, when setting up its dest-rect. r=mats (d7505c2ab) - Bug 1102048 (Part 15, VectorImage) - Make image/src files comply with the Mozilla Coding Style Guide. r=seth (c38d91d61) - do not uselessly run the preprocessor (280c69776) - Bug 1130816 - Bad argument passed to newChannelFromURI2 in WindowsPreviewPerTab.jsm (r=gijs) (70cd2eec7) - AppConstants.jsm changes - Bug 1149334 - Remove preprocessing of nsUpdateService.js and use AppConstants.jsm. r=gavin.sharp (ab53e3bc2) - Bug 1153657 - Performance Monitoring is not ready to ride the trains. r=yoric (582aef2de) - Bug 1140672 - Remove app update file migration code for Windows. r=spohl (c7d6a39ab) - Bug 1137901 - Remove param from refreshUpdateStatus. r=spohl (4d6bfc4e0) - Remove FHR from app update Bug 1121018 - FHR data migration: org.mozilla.update. r=spohl (70db64336) - lost bits of 1. main patch - Bug 843497 - Update check says 'up to date' for out (0975d2954) - 1. File renames for Bug 1136358 - Preprocessing and file includes make it difficult to debug app update tests. r=spohl (c94361eee) - 2. Build changes for Bug 1136358 - Preprocessing and file includes make it difficult to debug app update tests. r=spohl, r=gps (d4f2581a1) - 3. Main patch for Bug 1136358 - Preprocessing and file includes make it difficult to debug app update tests. r=spohl (f4f7e68c6) - 4. Use XPCOMUtils for Bug 1136358 - Preprocessing and file includes make it difficult to debug app update tests. r=spohl (0f4a9df9e) - Bug 1137447 - New app update telemetry for patch type (complete or partial), extended error codes, and general cleanup. r=bbondy (12fb03ead) - Bug 1149590 - Update/Upgrade for application dowloaded and installed, setting to ask/prompt for action ignored. r=spohl (2be30a384) - changes for nsUpdateService.js - Bug 1149334 - Remove preprocessing of nsUpdateService.js and use AppConstants.jsm. r=spohl (e404305ee) - Bug 1139958 - Start using AppConstants.jsm in Toolkit r=mossop (3e39e1160) - Bug 1150688 - Update sections of GMPInstallManager.jsm, which were copied from nsUpdateService.js, to reflect the changes to nsUpdateService.js from bug 1149334. r=spohl (3fa552f68) - Followup patch to Bug 1139958 forgot to add a comment to AppConstants.jsm r=mossop (be2408473)
133 lines
4.6 KiB
C++
133 lines
4.6 KiB
C++
/* -*- 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 mozilla_image_VectorImage_h
|
|
#define mozilla_image_VectorImage_h
|
|
|
|
#include "Image.h"
|
|
#include "nsIStreamListener.h"
|
|
#include "mozilla/MemoryReporting.h"
|
|
|
|
class nsIRequest;
|
|
class gfxDrawable;
|
|
|
|
namespace mozilla {
|
|
namespace image {
|
|
|
|
struct SVGDrawingParameters;
|
|
class SVGDocumentWrapper;
|
|
class SVGRootRenderingObserver;
|
|
class SVGLoadEventListener;
|
|
class SVGParseCompleteListener;
|
|
|
|
class VectorImage final : public ImageResource,
|
|
public nsIStreamListener
|
|
{
|
|
public:
|
|
NS_DECL_ISUPPORTS
|
|
NS_DECL_NSIREQUESTOBSERVER
|
|
NS_DECL_NSISTREAMLISTENER
|
|
NS_DECL_IMGICONTAINER
|
|
|
|
// (no public constructor - use ImageFactory)
|
|
|
|
// Methods inherited from Image
|
|
nsresult Init(const char* aMimeType,
|
|
uint32_t aFlags) override;
|
|
|
|
virtual size_t SizeOfSourceWithComputedFallback(MallocSizeOf aMallocSizeOf)
|
|
const override;
|
|
virtual size_t SizeOfDecoded(gfxMemoryLocation aLocation,
|
|
MallocSizeOf aMallocSizeOf) const override;
|
|
|
|
virtual nsresult OnImageDataAvailable(nsIRequest* aRequest,
|
|
nsISupports* aContext,
|
|
nsIInputStream* aInStr,
|
|
uint64_t aSourceOffset,
|
|
uint32_t aCount) override;
|
|
virtual nsresult OnImageDataComplete(nsIRequest* aRequest,
|
|
nsISupports* aContext,
|
|
nsresult aResult,
|
|
bool aLastPart) override;
|
|
|
|
void OnSurfaceDiscarded() override;
|
|
|
|
/**
|
|
* Callback for SVGRootRenderingObserver.
|
|
*
|
|
* This just sets a dirty flag that we check in VectorImage::RequestRefresh,
|
|
* which is called under the ticks of the refresh driver of any observing
|
|
* documents that we may have. Only then (after all animations in this image
|
|
* have been updated) do we send out "frame changed" notifications,
|
|
*/
|
|
void InvalidateObserversOnNextRefreshDriverTick();
|
|
|
|
// Callback for SVGParseCompleteListener.
|
|
void OnSVGDocumentParsed();
|
|
|
|
// Callbacks for SVGLoadEventListener.
|
|
void OnSVGDocumentLoaded();
|
|
void OnSVGDocumentError();
|
|
|
|
protected:
|
|
explicit VectorImage(ProgressTracker* aProgressTracker = nullptr,
|
|
ImageURL* aURI = nullptr);
|
|
virtual ~VectorImage();
|
|
|
|
virtual nsresult StartAnimation() override;
|
|
virtual nsresult StopAnimation() override;
|
|
virtual bool ShouldAnimate() override;
|
|
|
|
void CreateSurfaceAndShow(const SVGDrawingParameters& aParams);
|
|
void Show(gfxDrawable* aDrawable, const SVGDrawingParameters& aParams);
|
|
|
|
private:
|
|
/**
|
|
* In catastrophic circumstances like a GPU driver crash, we may lose our
|
|
* surfaces even if they're locked. RecoverFromLossOfSurfaces discards all
|
|
* existing surfaces, allowing us to recover.
|
|
*/
|
|
void RecoverFromLossOfSurfaces();
|
|
|
|
void CancelAllListeners();
|
|
void SendInvalidationNotifications();
|
|
|
|
nsRefPtr<SVGDocumentWrapper> mSVGDocumentWrapper;
|
|
nsRefPtr<SVGRootRenderingObserver> mRenderingObserver;
|
|
nsRefPtr<SVGLoadEventListener> mLoadEventListener;
|
|
nsRefPtr<SVGParseCompleteListener> mParseCompleteListener;
|
|
|
|
/// Count of locks on this image (roughly correlated to visible instances).
|
|
uint32_t mLockCount;
|
|
|
|
bool mIsInitialized; // Have we been initialized?
|
|
bool mDiscardable; // Are we discardable?
|
|
bool mIsFullyLoaded; // Has the SVG document finished
|
|
// loading?
|
|
bool mIsDrawing; // Are we currently drawing?
|
|
bool mHaveAnimations; // Is our SVG content SMIL-animated?
|
|
// (Only set after mIsFullyLoaded.)
|
|
bool mHasPendingInvalidation; // Invalidate observers next refresh
|
|
// driver tick.
|
|
|
|
// Initializes ProgressTracker and resets it on RasterImage destruction.
|
|
nsAutoPtr<ProgressTrackerInit> mProgressTrackerInit;
|
|
|
|
friend class ImageFactory;
|
|
};
|
|
|
|
inline NS_IMETHODIMP VectorImage::GetAnimationMode(uint16_t* aAnimationMode) {
|
|
return GetAnimationModeInternal(aAnimationMode);
|
|
}
|
|
|
|
inline NS_IMETHODIMP VectorImage::SetAnimationMode(uint16_t aAnimationMode) {
|
|
return SetAnimationModeInternal(aAnimationMode);
|
|
}
|
|
|
|
} // namespace image
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_image_VectorImage_h
|