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