1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef IncrementLoadEventDelayCount_h
6#define IncrementLoadEventDelayCount_h
7
8#include "platform/heap/Handle.h"
9#include "wtf/Noncopyable.h"
10#include "wtf/RefPtr.h"
11
12namespace blink {
13
14class Document;
15
16// A helper class that will increment a document's loadEventDelayCount on
17// contruction and decrement it on destruction (semantics similar to RefPtr).
18class IncrementLoadEventDelayCount {
19    WTF_MAKE_NONCOPYABLE(IncrementLoadEventDelayCount);
20
21public:
22    static PassOwnPtr<IncrementLoadEventDelayCount> create(Document&);
23    ~IncrementLoadEventDelayCount();
24
25    // Increments the new document's count and decrements the old count.
26    void documentChanged(Document& newDocument);
27
28private:
29    IncrementLoadEventDelayCount(Document&);
30    RefPtrWillBePersistent<Document> m_document;
31};
32}
33
34#endif
35