OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright (C) 2012 Google, Inc. All rights reserved. | 3 * Copyright (C) 2012 Google, Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 13 matching lines...) Expand all Loading... |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #include "config.h" | 27 #include "config.h" |
28 #include "core/frame/UseCounter.h" | 28 #include "core/frame/UseCounter.h" |
29 | 29 |
30 #include "core/css/CSSStyleSheet.h" | 30 #include "core/css/CSSStyleSheet.h" |
31 #include "core/css/StyleSheetContents.h" | 31 #include "core/css/StyleSheetContents.h" |
32 #include "core/dom/Document.h" | 32 #include "core/dom/Document.h" |
33 #include "core/dom/ExecutionContext.h" | 33 #include "core/dom/ExecutionContext.h" |
34 #include "core/frame/LocalDOMWindow.h" | |
35 #include "core/frame/FrameConsole.h" | 34 #include "core/frame/FrameConsole.h" |
36 #include "core/frame/FrameHost.h" | 35 #include "core/frame/FrameHost.h" |
37 #include "core/frame/LocalFrame.h" | 36 #include "core/frame/LocalFrame.h" |
38 #include "core/inspector/ConsoleMessage.h" | 37 #include "core/inspector/ConsoleMessage.h" |
39 #include "core/workers/WorkerGlobalScope.h" | 38 #include "core/workers/WorkerGlobalScope.h" |
40 #include "public/platform/Platform.h" | 39 #include "public/platform/Platform.h" |
41 | 40 |
42 namespace blink { | 41 namespace blink { |
43 | 42 |
44 static int totalPagesMeasuredCSSSampleId() { return 1; } | 43 static int totalPagesMeasuredCSSSampleId() { return 1; } |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserve
r.CSSProperties", totalPagesMeasuredCSSSampleId(), maximumCSSSampleId()); | 569 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserve
r.CSSProperties", totalPagesMeasuredCSSSampleId(), maximumCSSSampleId()); |
571 | 570 |
572 m_CSSFeatureBits.clearAll(); | 571 m_CSSFeatureBits.clearAll(); |
573 } | 572 } |
574 | 573 |
575 void UseCounter::didCommitLoad() | 574 void UseCounter::didCommitLoad() |
576 { | 575 { |
577 updateMeasurements(); | 576 updateMeasurements(); |
578 } | 577 } |
579 | 578 |
580 void UseCounter::count(const Document& document, Feature feature) | 579 void UseCounter::count(const Frame* frame, Feature feature) |
581 { | 580 { |
582 FrameHost* host = document.frameHost(); | 581 if (!frame) |
| 582 return; |
| 583 FrameHost* host = frame->host(); |
583 if (!host) | 584 if (!host) |
584 return; | 585 return; |
585 | 586 |
586 ASSERT(host->useCounter().deprecationMessage(feature).isEmpty()); | 587 ASSERT(host->useCounter().deprecationMessage(feature).isEmpty()); |
587 host->useCounter().recordMeasurement(feature); | 588 host->useCounter().recordMeasurement(feature); |
588 } | 589 } |
589 | 590 |
| 591 void UseCounter::count(const Document& document, Feature feature) |
| 592 { |
| 593 count(document.frame(), feature); |
| 594 } |
| 595 |
590 void UseCounter::count(const ExecutionContext* context, Feature feature) | 596 void UseCounter::count(const ExecutionContext* context, Feature feature) |
591 { | 597 { |
592 if (!context) | 598 if (!context) |
593 return; | 599 return; |
594 if (context->isDocument()) { | 600 if (context->isDocument()) { |
595 count(*toDocument(context), feature); | 601 count(*toDocument(context), feature); |
596 return; | 602 return; |
597 } | 603 } |
598 if (context->isWorkerGlobalScope()) | 604 if (context->isWorkerGlobalScope()) |
599 toWorkerGlobalScope(context)->countFeature(feature); | 605 toWorkerGlobalScope(context)->countFeature(feature); |
600 } | 606 } |
601 | 607 |
| 608 void UseCounter::countIfNotPrivateScript(v8::Isolate* isolate, const Frame* fram
e, Feature feature) |
| 609 { |
| 610 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) |
| 611 return; |
| 612 UseCounter::count(frame, feature); |
| 613 } |
| 614 |
602 void UseCounter::countIfNotPrivateScript(v8::Isolate* isolate, const Document& d
ocument, Feature feature) | 615 void UseCounter::countIfNotPrivateScript(v8::Isolate* isolate, const Document& d
ocument, Feature feature) |
603 { | 616 { |
604 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) | 617 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) |
605 return; | 618 return; |
606 UseCounter::count(document, feature); | 619 UseCounter::count(document, feature); |
607 } | 620 } |
608 | 621 |
609 void UseCounter::countIfNotPrivateScript(v8::Isolate* isolate, const ExecutionCo
ntext* context, Feature feature) | 622 void UseCounter::countIfNotPrivateScript(v8::Isolate* isolate, const ExecutionCo
ntext* context, Feature feature) |
610 { | 623 { |
611 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) | 624 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) |
612 return; | 625 return; |
613 UseCounter::count(context, feature); | 626 UseCounter::count(context, feature); |
614 } | 627 } |
615 | 628 |
| 629 void UseCounter::countDeprecation(const LocalFrame* frame, Feature feature) |
| 630 { |
| 631 if (!frame) |
| 632 return; |
| 633 FrameHost* host = frame->host(); |
| 634 if (!host) |
| 635 return; |
| 636 |
| 637 if (host->useCounter().recordMeasurement(feature)) { |
| 638 ASSERT(!host->useCounter().deprecationMessage(feature).isEmpty()); |
| 639 frame->console().addMessage(ConsoleMessage::create(DeprecationMessageSou
rce, WarningMessageLevel, host->useCounter().deprecationMessage(feature))); |
| 640 } |
| 641 } |
| 642 |
616 void UseCounter::countDeprecation(ExecutionContext* context, Feature feature) | 643 void UseCounter::countDeprecation(ExecutionContext* context, Feature feature) |
617 { | 644 { |
618 if (!context) | 645 if (!context) |
619 return; | 646 return; |
620 if (context->isDocument()) { | 647 if (context->isDocument()) { |
621 UseCounter::countDeprecation(*toDocument(context), feature); | 648 UseCounter::countDeprecation(*toDocument(context), feature); |
622 return; | 649 return; |
623 } | 650 } |
624 if (context->isWorkerGlobalScope()) | 651 if (context->isWorkerGlobalScope()) |
625 toWorkerGlobalScope(context)->countDeprecation(feature); | 652 toWorkerGlobalScope(context)->countDeprecation(feature); |
626 } | 653 } |
627 | 654 |
628 void UseCounter::countDeprecation(const LocalDOMWindow* window, Feature feature) | |
629 { | |
630 if (!window || !window->document()) | |
631 return; | |
632 UseCounter::countDeprecation(*window->document(), feature); | |
633 } | |
634 | |
635 void UseCounter::countDeprecation(const Document& document, Feature feature) | 655 void UseCounter::countDeprecation(const Document& document, Feature feature) |
636 { | 656 { |
637 FrameHost* host = document.frameHost(); | 657 UseCounter::countDeprecation(document.frame(), feature); |
638 LocalFrame* frame = document.frame(); | |
639 if (!host || !frame) | |
640 return; | |
641 | |
642 if (host->useCounter().recordMeasurement(feature)) { | |
643 ASSERT(!host->useCounter().deprecationMessage(feature).isEmpty()); | |
644 frame->console().addMessage(ConsoleMessage::create(DeprecationMessageSou
rce, WarningMessageLevel, host->useCounter().deprecationMessage(feature))); | |
645 } | |
646 } | 658 } |
647 | 659 |
648 void UseCounter::countDeprecationIfNotPrivateScript(v8::Isolate* isolate, Execut
ionContext* context, Feature feature) | 660 void UseCounter::countDeprecationIfNotPrivateScript(v8::Isolate* isolate, Execut
ionContext* context, Feature feature) |
649 { | 661 { |
650 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) | 662 if (DOMWrapperWorld::current(isolate).isPrivateScriptIsolatedWorld()) |
651 return; | 663 return; |
652 UseCounter::countDeprecation(context, feature); | 664 UseCounter::countDeprecation(context, feature); |
653 } | 665 } |
654 | 666 |
655 // FIXME: Update other UseCounter::deprecationMessage() cases to use this. | 667 // FIXME: Update other UseCounter::deprecationMessage() cases to use this. |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 UseCounter* UseCounter::getFrom(const StyleSheetContents* sheetContents) | 863 UseCounter* UseCounter::getFrom(const StyleSheetContents* sheetContents) |
852 { | 864 { |
853 // FIXME: We may want to handle stylesheets that have multiple owners | 865 // FIXME: We may want to handle stylesheets that have multiple owners |
854 // http://crbug.com/242125 | 866 // http://crbug.com/242125 |
855 if (sheetContents && sheetContents->hasSingleOwnerNode()) | 867 if (sheetContents && sheetContents->hasSingleOwnerNode()) |
856 return getFrom(sheetContents->singleOwnerDocument()); | 868 return getFrom(sheetContents->singleOwnerDocument()); |
857 return 0; | 869 return 0; |
858 } | 870 } |
859 | 871 |
860 } // namespace blink | 872 } // namespace blink |
OLD | NEW |