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