Changeset 156625 in webkit
- Timestamp:
- Sep 29, 2013 9:36:35 PM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r156623 r156625 1 2013-09-29 Sam Weinig <sam@webkit.org> 2 3 Cleanup PageThrottler and PageConsole a bit 4 https://bugs.webkit.org/show_bug.cgi?id=122085 5 6 Reviewed by Anders Carlsson. 7 8 * html/HTMLMediaElement.h: 9 * loader/FrameLoader.cpp: 10 (WebCore::FrameLoader::completed): 11 * loader/FrameLoader.h: 12 * loader/SubresourceLoader.cpp: 13 (WebCore::SubresourceLoader::checkForHTTPStatusCodeError): 14 (WebCore::SubresourceLoader::didFinishLoading): 15 (WebCore::SubresourceLoader::didFail): 16 (WebCore::SubresourceLoader::willCancel): 17 * loader/SubresourceLoader.h: 18 Store the PageActivityAssertionToken as a std::unique_ptr. 19 20 * page/Page.cpp: 21 (WebCore::Page::Page): 22 Use createOwned and pass this by reference for the PageThrottler and PageConsole. 23 (WebCore::Page::~Page): 24 Remove unnecessary clearing of an OwnPtr that is about to be destroyed. 25 * page/Page.h: 26 Make m_pageThrottler const and return it as a reference. 27 28 * page/PageActivityAssertionToken.cpp: 29 (WebCore::PageActivityAssertionToken::PageActivityAssertionToken): 30 (WebCore::PageActivityAssertionToken::~PageActivityAssertionToken): 31 * page/PageActivityAssertionToken.h: 32 Take the PageThrottler by reference in the constructor. It is never null. 33 34 * page/PageConsole.cpp: 35 (WebCore::PageConsole::PageConsole): 36 (WebCore::PageConsole::~PageConsole): 37 (WebCore::PageConsole::addMessage): 38 * page/PageConsole.h: 39 Pass and store the Page as a reference and remove an extraneous null check. Remove 40 the create function. 41 42 * page/PageThrottler.cpp: 43 (WebCore::PageThrottler::PageThrottler): 44 (WebCore::PageThrottler::~PageThrottler): 45 (WebCore::PageThrottler::createActivityToken): 46 (WebCore::PageThrottler::throttlePage): 47 (WebCore::PageThrottler::unthrottlePage): 48 (WebCore::PageThrottler::addActivityToken): 49 (WebCore::PageThrottler::removeActivityToken): 50 * page/PageThrottler.h: 51 Pass and store the Page as a reference. Move the creation of PageActivityAssertionToken here 52 to aid encapsulation. 53 1 54 2013-09-29 Darin Adler <darin@apple.com> 2 55 -
trunk/Source/WebCore/html/HTMLMediaElement.h
r156550 r156625 782 782 #endif 783 783 784 OwnPtr<PageActivityAssertionToken> m_activityToken;784 std::unique_ptr<PageActivityAssertionToken> m_activityToken; 785 785 size_t m_reportedExtraMemoryCost; 786 786 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r156607 r156625 1102 1102 if (m_frame.view()) 1103 1103 m_frame.view()->maintainScrollPositionAtAnchor(0); 1104 m_activityAssertion .clear();1104 m_activityAssertion = nullptr; 1105 1105 } 1106 1106 -
trunk/Source/WebCore/loader/FrameLoader.h
r156607 r156625 448 448 URL m_previousURL; 449 449 RefPtr<HistoryItem> m_requestedHistoryItem; 450 OwnPtr<PageActivityAssertionToken> m_activityAssertion;450 std::unique_ptr<PageActivityAssertionToken> m_activityAssertion; 451 451 }; 452 452 -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r156550 r156625 261 261 262 262 m_state = Finishing; 263 m_activityAssertion .clear();263 m_activityAssertion = nullptr; 264 264 m_resource->error(CachedResource::LoadError); 265 265 cancel(); … … 279 279 CachedResourceHandle<CachedResource> protectResource(m_resource); 280 280 m_state = Finishing; 281 m_activityAssertion .clear();281 m_activityAssertion = nullptr; 282 282 m_resource->setLoadFinishTime(finishTime); 283 283 m_resource->finishLoading(resourceData()); … … 304 304 CachedResourceHandle<CachedResource> protectResource(m_resource); 305 305 m_state = Finishing; 306 m_activityAssertion .clear();306 m_activityAssertion = nullptr; 307 307 if (m_resource->resourceToRevalidate()) 308 308 memoryCache()->revalidationFailed(m_resource); … … 327 327 Ref<SubresourceLoader> protect(*this); 328 328 m_state = Finishing; 329 m_activityAssertion .clear();329 m_activityAssertion = nullptr; 330 330 if (m_resource->resourceToRevalidate()) 331 331 memoryCache()->revalidationFailed(m_resource); -
trunk/Source/WebCore/loader/SubresourceLoader.h
r152778 r156625 103 103 SubresourceLoaderState m_state; 104 104 OwnPtr<RequestCountTracker> m_requestCountTracker; 105 OwnPtr<PageActivityAssertionToken> m_activityAssertion;105 std::unique_ptr<PageActivityAssertionToken> m_activityAssertion; 106 106 }; 107 107 -
trunk/Source/WebCore/page/Page.cpp
r156607 r156625 186 186 , m_alternativeTextClient(pageClients.alternativeTextClient) 187 187 , m_scriptedAnimationsSuspended(false) 188 , m_pageThrottler( PageThrottler::create(this))189 , m_console( PageConsole::create(this))188 , m_pageThrottler(createOwned<PageThrottler>(*this)) 189 , m_console(createOwned<PageConsole>(*this)) 190 190 , m_lastSpatialNavigationCandidatesCount(0) // NOTE: Only called from Internals for Spatial Navigation testing. 191 191 , m_framesHandlingBeforeUnloadEvent(0) … … 236 236 pageCounter.decrement(); 237 237 #endif 238 239 m_pageThrottler.clear();240 238 } 241 239 … … 1506 1504 } 1507 1505 1508 PassOwnPtr<PageActivityAssertionToken> Page::createActivityToken()1509 { 1510 return adoptPtr(new PageActivityAssertionToken(m_pageThrottler.get()));1506 std::unique_ptr<PageActivityAssertionToken> Page::createActivityToken() 1507 { 1508 return m_pageThrottler->createActivityToken(); 1511 1509 } 1512 1510 -
trunk/Source/WebCore/page/Page.h
r156607 r156625 396 396 void resetSeenMediaEngines(); 397 397 398 PageThrottler * pageThrottler() { return m_pageThrottler.get(); }399 PassOwnPtr<PageActivityAssertionToken> createActivityToken();398 PageThrottler& pageThrottler() { return *m_pageThrottler; } 399 std::unique_ptr<PageActivityAssertionToken> createActivityToken(); 400 400 401 401 PageConsole& console() { return *m_console; } … … 547 547 548 548 bool m_scriptedAnimationsSuspended; 549 OwnPtr<PageThrottler> m_pageThrottler; 550 549 const OwnPtr<PageThrottler> m_pageThrottler; 551 550 const OwnPtr<PageConsole> m_console; 552 551 -
trunk/Source/WebCore/page/PageActivityAssertionToken.cpp
r150971 r156625 31 31 namespace WebCore { 32 32 33 PageActivityAssertionToken::PageActivityAssertionToken(PageThrottler *throttler)34 : m_throttler(throttler)33 PageActivityAssertionToken::PageActivityAssertionToken(PageThrottler& throttler) 34 : m_throttler(&throttler) 35 35 { 36 if (m_throttler) 37 m_throttler->addActivityToken(this); 36 m_throttler->addActivityToken(*this); 38 37 } 39 38 … … 41 40 { 42 41 if (m_throttler) 43 m_throttler->removeActivityToken( this);42 m_throttler->removeActivityToken(*this); 44 43 } 45 44 … … 49 48 } 50 49 51 } 50 } // namespace WebCore 52 51 53 52 -
trunk/Source/WebCore/page/PageActivityAssertionToken.h
r150971 r156625 36 36 WTF_MAKE_NONCOPYABLE(PageActivityAssertionToken); 37 37 public: 38 PageActivityAssertionToken(PageThrottler&); 38 39 ~PageActivityAssertionToken(); 39 40 … … 41 42 42 43 private: 43 friend class Page;44 PageActivityAssertionToken(PageThrottler*);45 46 44 PageThrottler* m_throttler; 47 45 }; 48 46 49 } 47 } // namespace WebCore 50 48 51 49 #endif // PageActivityAssertionToken_h -
trunk/Source/WebCore/page/PageConsole.cpp
r156130 r156625 56 56 } 57 57 58 PageConsole::PageConsole(Page* page) : m_page(page) { } 59 60 PageConsole::~PageConsole() { } 58 PageConsole::PageConsole(Page& page) 59 : m_page(page) 60 { 61 } 62 63 PageConsole::~PageConsole() 64 { 65 } 61 66 62 67 void PageConsole::printSourceURLAndLine(const String& sourceURL, unsigned lineNumber) … … 162 167 return; 163 168 164 Page* page = this->page();165 if (!page)166 return;167 168 169 if (callStack) 169 InspectorInstrumentation::addMessageToConsole( page, source, LogMessageType, level, message, callStack, requestIdentifier);170 InspectorInstrumentation::addMessageToConsole(&m_page, source, LogMessageType, level, message, callStack, requestIdentifier); 170 171 else 171 InspectorInstrumentation::addMessageToConsole( page, source, LogMessageType, level, message, url, lineNumber, columnNumber, state, requestIdentifier);172 InspectorInstrumentation::addMessageToConsole(&m_page, source, LogMessageType, level, message, url, lineNumber, columnNumber, state, requestIdentifier); 172 173 173 174 if (source == CSSMessageSource) 174 175 return; 175 176 176 if ( page->settings().privateBrowsingEnabled())177 return; 178 179 page->chrome().client().addMessageToConsole(source, level, message, lineNumber, columnNumber, url);180 181 if (! page->settings().logsPageMessagesToSystemConsoleEnabled() && !shouldPrintExceptions())177 if (m_page.settings().privateBrowsingEnabled()) 178 return; 179 180 m_page.chrome().client().addMessageToConsole(source, level, message, lineNumber, columnNumber, url); 181 182 if (!m_page.settings().logsPageMessagesToSystemConsoleEnabled() && !shouldPrintExceptions()) 182 183 return; 183 184 -
trunk/Source/WebCore/page/PageConsole.h
r155736 r156625 32 32 #include "ConsoleTypes.h" 33 33 #include "ScriptCallStack.h" 34 #include "ScriptState.h"35 34 #include <wtf/Forward.h> 36 35 #include <wtf/PassOwnPtr.h> 36 37 namespace JSC { 38 class ExecState; 39 } 37 40 38 41 namespace WebCore { … … 43 46 class PageConsole { 44 47 public: 45 static PassOwnPtr<PageConsole> create(Page* page) { return adoptPtr(new PageConsole(page)); }46 virtual~PageConsole();48 PageConsole(Page&); 49 ~PageConsole(); 47 50 48 51 static void printSourceURLAndLine(const String& sourceURL, unsigned lineNumber); … … 60 63 61 64 private: 62 PageConsole(Page*); 63 64 Page* page() { return m_page; }; 65 66 Page* m_page; 65 Page& m_page; 67 66 }; 68 67 -
trunk/Source/WebCore/page/PageThrottler.cpp
r156543 r156625 32 32 #include "Page.h" 33 33 #include "PageActivityAssertionToken.h" 34 #include <wtf/StdLibExtras.h> 34 35 35 36 namespace WebCore { … … 37 38 static const double kThrottleHysteresisSeconds = 2.0; 38 39 39 PageThrottler::PageThrottler(Page *page)40 PageThrottler::PageThrottler(Page& page) 40 41 : m_page(page) 41 42 , m_throttleState(PageNotThrottledState) 42 43 , m_throttleHysteresisTimer(this, &PageThrottler::throttleHysteresisTimerFired) 43 44 { 44 m_page ->chrome().client().incrementActivePageCount();45 m_page.chrome().client().incrementActivePageCount(); 45 46 } 46 47 … … 49 50 setThrottled(false); 50 51 51 for ( HashSet<PageActivityAssertionToken*>::iterator i = m_activityTokens.begin(); i != m_activityTokens.end(); ++i)52 (*i )->invalidate();52 for (auto it = m_activityTokens.begin(), end = m_activityTokens.end(); it != end; ++it) 53 (*it)->invalidate(); 53 54 54 55 if (m_throttleState != PageThrottledState) 55 m_page->chrome().client().decrementActivePageCount(); 56 m_page.chrome().client().decrementActivePageCount(); 57 } 58 59 std::unique_ptr<PageActivityAssertionToken> PageThrottler::createActivityToken() 60 { 61 return std::make_unique<PageActivityAssertionToken>(*this); 56 62 } 57 63 … … 60 66 m_throttleState = PageThrottledState; 61 67 62 m_page ->chrome().client().decrementActivePageCount();68 m_page.chrome().client().decrementActivePageCount(); 63 69 64 for (Frame* frame = &m_page ->mainFrame(); frame; frame = frame->tree().traverseNext()) {70 for (Frame* frame = &m_page.mainFrame(); frame; frame = frame->tree().traverseNext()) { 65 71 if (frame->document()) 66 72 frame->document()->scriptedAnimationControllerSetThrottled(true); 67 73 } 68 74 69 m_page ->throttleTimers();75 m_page.throttleTimers(); 70 76 } 71 77 … … 79 85 80 86 if (oldState == PageThrottledState) 81 m_page ->chrome().client().incrementActivePageCount();87 m_page.chrome().client().incrementActivePageCount(); 82 88 83 for (Frame* frame = &m_page ->mainFrame(); frame; frame = frame->tree().traverseNext()) {89 for (Frame* frame = &m_page.mainFrame(); frame; frame = frame->tree().traverseNext()) { 84 90 if (frame->document()) 85 91 frame->document()->scriptedAnimationControllerSetThrottled(false); 86 92 } 87 93 88 m_page ->unthrottleTimers();94 m_page.unthrottleTimers(); 89 95 } 90 96 … … 129 135 } 130 136 131 void PageThrottler::addActivityToken(PageActivityAssertionToken *token)137 void PageThrottler::addActivityToken(PageActivityAssertionToken& token) 132 138 { 133 ASSERT( token && !m_activityTokens.contains(token));139 ASSERT(!m_activityTokens.contains(&token)); 134 140 135 m_activityTokens.add( token);141 m_activityTokens.add(&token); 136 142 137 143 // If we've already got events that block throttling we can return early … … 149 155 } 150 156 151 void PageThrottler::removeActivityToken(PageActivityAssertionToken *token)157 void PageThrottler::removeActivityToken(PageActivityAssertionToken& token) 152 158 { 153 ASSERT( token && m_activityTokens.contains(token));159 ASSERT(m_activityTokens.contains(&token)); 154 160 155 m_activityTokens.remove( token);161 m_activityTokens.remove(&token); 156 162 157 163 if (m_activityTokens.size()) -
trunk/Source/WebCore/page/PageThrottler.h
r152402 r156625 40 40 class PageThrottler { 41 41 public: 42 static PassOwnPtr<PageThrottler> create(Page* page)43 {44 return adoptPtr(new PageThrottler(page)); 45 }42 PageThrottler(Page&); 43 ~PageThrottler(); 44 45 std::unique_ptr<PageActivityAssertionToken> createActivityToken(); 46 46 47 47 bool shouldThrottleAnimations() const { return m_throttleState != PageNotThrottledState; } … … 51 51 52 52 void reportInterestingEvent(); 53 54 ~PageThrottler();55 53 56 54 private: … … 62 60 63 61 friend class PageActivityAssertionToken; 64 void addActivityToken(PageActivityAssertionToken *);65 void removeActivityToken(PageActivityAssertionToken *);62 void addActivityToken(PageActivityAssertionToken&); 63 void removeActivityToken(PageActivityAssertionToken&); 66 64 67 PageThrottler(Page*);68 65 void startThrottleHysteresisTimer(); 69 66 void stopThrottleHysteresisTimer(); 70 67 void throttleHysteresisTimerFired(Timer<PageThrottler>*); 71 68 72 Page* m_page;73 74 69 void throttlePage(); 75 70 void unthrottlePage(); 76 71 72 Page& m_page; 77 73 PageThrottleState m_throttleState; 78 74 Timer<PageThrottler> m_throttleHysteresisTimer;
Note: See TracChangeset
for help on using the changeset viewer.