17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be 37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file. 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#ifndef ConsoleMessageStorage_h 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define ConsoleMessageStorage_h 77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/inspector/ConsoleMessage.h" 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/heap/Handle.h" 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "wtf/Forward.h" 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink { 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass LocalDOMWindow; 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass WorkerGlobalScopeProxy; 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass ConsoleMessageStorage FINAL : public NoBaseWillBeGarbageCollected<ConsoleMessageStorage> { 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WTF_MAKE_NONCOPYABLE(ConsoleMessageStorage); 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccipublic: 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static PassOwnPtrWillBeRawPtr<ConsoleMessageStorage> createForWorker(ExecutionContext* context) 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return adoptPtrWillBeNoop(new ConsoleMessageStorage(context)); 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static PassOwnPtrWillBeRawPtr<ConsoleMessageStorage> createForFrame(LocalFrame* frame) 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return adoptPtrWillBeNoop(new ConsoleMessageStorage(frame)); 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void reportMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>); 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void clear(); 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Vector<unsigned> argumentCounts() const; 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void adoptWorkerMessagesAfterTermination(WorkerGlobalScopeProxy*); 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void frameWindowDiscarded(LocalDOMWindow*); 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci size_t size() const; 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ConsoleMessage* at(size_t index) const; 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci int expiredCount() const; 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void trace(Visitor*); 457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciprivate: 477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci explicit ConsoleMessageStorage(ExecutionContext*); 487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci explicit ConsoleMessageStorage(LocalFrame*); 497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ExecutionContext* executionContext() const; 517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci int m_expiredCount; 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WillBeHeapDeque<RefPtrWillBeMember<ConsoleMessage> > m_messages; 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RawPtrWillBeMember<ExecutionContext> m_context; 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RawPtrWillBeMember<LocalFrame> m_frame; 567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}; 577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink 597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // ConsoleMessageStorage_h 61