CLOSED TREE
This commit is contained in:
Ryan VanderMeulen 2017-05-16 20:10:26 -04:00
Родитель 1719d6cced c8ef78fe63
Коммит 4b4b439b5e
8 изменённых файлов: 428 добавлений и 256 удалений

Просмотреть файл

@ -1766,16 +1766,17 @@ nsDocumentViewer::Destroy()
#ifdef NS_PRINTING
if (mPrintEngine) {
RefPtr<nsPrintEngine> printEngine = mozilla::Move(mPrintEngine);
#ifdef NS_PRINT_PREVIEW
bool doingPrintPreview;
mPrintEngine->GetDoingPrintPreview(&doingPrintPreview);
printEngine->GetDoingPrintPreview(&doingPrintPreview);
if (doingPrintPreview) {
mPrintEngine->FinishPrintPreview();
printEngine->FinishPrintPreview();
}
#endif
mPrintEngine->Destroy();
mPrintEngine = nullptr;
printEngine->Destroy();
MOZ_ASSERT(!mPrintEngine,
"mPrintEngine shouldn't be recreated while destroying it");
}
#endif

Просмотреть файл

@ -55,7 +55,11 @@ public:
void WaitForRemotePrint();
void RemotePrintFinished();
void Disconnect() { mPrintEngine = nullptr; }
void Disconnect()
{
mPrintEngine = nullptr;
mPrintObj = nullptr;
}
private:
~nsPagePrintTimer();

Просмотреть файл

@ -34,7 +34,6 @@ nsPrintData::nsPrintData(ePrintDataType aType) :
mShrinkRatio(1.0), mOrigDCScale(1.0), mPPEventListeners(nullptr),
mBrandName(nullptr)
{
MOZ_COUNT_CTOR(nsPrintData);
nsCOMPtr<nsIStringBundle> brandBundle;
nsCOMPtr<nsIStringBundleService> svc =
mozilla::services::GetStringBundleService();
@ -53,7 +52,6 @@ nsPrintData::nsPrintData(ePrintDataType aType) :
nsPrintData::~nsPrintData()
{
MOZ_COUNT_DTOR(nsPrintData);
// remove the event listeners
if (mPPEventListeners) {
mPPEventListeners->RemoveListeners();
@ -110,11 +108,17 @@ nsPrintData::DoOnProgressChange(int32_t aProgress,
bool aDoStartStop,
int32_t aFlag)
{
for (int32_t i=0;i<mPrintProgressListeners.Count();i++) {
nsIWebProgressListener* wpl = mPrintProgressListeners.ObjectAt(i);
wpl->OnProgressChange(nullptr, nullptr, aProgress, aMaxProgress, aProgress, aMaxProgress);
size_t numberOfListeners = mPrintProgressListeners.Length();
for (size_t i = 0; i < numberOfListeners; ++i) {
nsCOMPtr<nsIWebProgressListener> listener =
mPrintProgressListeners.SafeElementAt(i);
if (NS_WARN_IF(!listener)) {
continue;
}
listener->OnProgressChange(nullptr, nullptr, aProgress, aMaxProgress,
aProgress, aMaxProgress);
if (aDoStartStop) {
wpl->OnStateChange(nullptr, nullptr, aFlag, NS_OK);
listener->OnStateChange(nullptr, nullptr, aFlag, NS_OK);
}
}
}
@ -122,12 +126,14 @@ nsPrintData::DoOnProgressChange(int32_t aProgress,
void
nsPrintData::DoOnStatusChange(nsresult aStatus)
{
uint32_t numberOfListeners = mPrintProgressListeners.Length();
for (uint32_t i = 0; i < numberOfListeners; ++i) {
nsIWebProgressListener* listener = mPrintProgressListeners.SafeElementAt(i);
if (listener) {
listener->OnStatusChange(nullptr, nullptr, aStatus, nullptr);
size_t numberOfListeners = mPrintProgressListeners.Length();
for (size_t i = 0; i < numberOfListeners; ++i) {
nsCOMPtr<nsIWebProgressListener> listener =
mPrintProgressListeners.SafeElementAt(i);
if (NS_WARN_IF(!listener)) {
continue;
}
listener->OnStatusChange(nullptr, nullptr, aStatus, nullptr);
}
}

Просмотреть файл

@ -13,6 +13,7 @@
#include "nsDeviceContext.h"
#include "nsIPrintProgressParams.h"
#include "nsIPrintSettings.h"
#include "nsISupportsImpl.h"
#include "nsTArray.h"
#include "nsCOMArray.h"
@ -37,11 +38,11 @@ class nsIWebProgressListener;
//------------------------------------------------------------------------
class nsPrintData {
public:
typedef enum {eIsPrinting, eIsPrintPreview } ePrintDataType;
explicit nsPrintData(ePrintDataType aType);
~nsPrintData(); // non-virtual
NS_INLINE_DECL_REFCOUNTING(nsPrintData)
// Listener Helper Methods
void OnEndPrinting();
@ -93,6 +94,7 @@ private:
nsPrintData() = delete;
nsPrintData& operator=(const nsPrintData& aOther) = delete;
~nsPrintData(); // non-virtual
};
#endif /* nsPrintData_h___ */

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -265,13 +265,19 @@ protected:
nsWeakPtr mContainer;
float mScreenDPI;
mozilla::UniquePtr<nsPrintData> mPrt;
// We are the primary owner of our nsPrintData member vars. These vars
// are refcounted so that functions (e.g. nsPrintData methods) can create
// temporary owning references when they need to fire a callback that
// could conceivably destroy this nsPrintEngine owner object and all its
// member-data.
RefPtr<nsPrintData> mPrt;
nsPagePrintTimer* mPagePrintTimer;
WeakFrame mPageSeqFrame;
// Print Preview
mozilla::UniquePtr<nsPrintData> mPrtPreview;
mozilla::UniquePtr<nsPrintData> mOldPrtPreview;
RefPtr<nsPrintData> mPrtPreview;
RefPtr<nsPrintData> mOldPrtPreview;
nsCOMPtr<nsIDocument> mDocument;

Просмотреть файл

@ -120,6 +120,7 @@ TEST(ArenaAllocator, AllocateLargerThanArenaSize)
EXPECT_EQ(uintptr_t(x) + 8, uintptr_t(y));
}
#ifndef MOZ_CODE_COVERAGE
TEST(ArenaAllocator, AllocationsPerChunk)
{
// Test that expected number of allocations fit in one chunk.
@ -193,6 +194,7 @@ TEST(ArenaAllocator, MemoryIsValid)
EXPECT_EQ(x[i], kMark);
}
}
#endif
MOZ_DEFINE_MALLOC_SIZE_OF(TestSizeOf);

Просмотреть файл

@ -64,6 +64,9 @@ if CONFIG['WRAP_STL_INCLUDES'] and not CONFIG['CLANG_CL']:
'TestSTLWrappers.cpp',
]
if CONFIG['MOZ_CODE_COVERAGE']:
DEFINES['MOZ_CODE_COVERAGE'] = True
# Compile TestAllocReplacement separately so Windows headers don't pollute
# the global namespace for other files.
SOURCES += [