| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google, Inc. All rights reserved. | 2 * Copyright (C) 2012 Google, Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 int UseCounter::m_muteCount = 0; | 44 int UseCounter::m_muteCount = 0; |
| 45 | 45 |
| 46 // FIXME : This mapping should be autogenerated. This function should | 46 // FIXME : This mapping should be autogenerated. This function should |
| 47 // be moved to a separate file and a script run at build time | 47 // be moved to a separate file and a script run at build time |
| 48 // to detect new values in CSSPropertyID and add them to the | 48 // to detect new values in CSSPropertyID and add them to the |
| 49 // end of this function. This file would be checked in. | 49 // end of this function. This file would be checked in. |
| 50 // https://code.google.com/p/chromium/issues/detail?id=234940 | 50 // https://code.google.com/p/chromium/issues/detail?id=234940 |
| 51 int UseCounter::mapCSSPropertyIdToCSSSampleIdForHistogram(int id) | 51 int UseCounter::mapCSSPropertyIdToCSSSampleIdForHistogram(int id) |
| 52 { | 52 { |
| 53 CSSPropertyID cssPropertyID = convertToCSSPropertyID(id); | 53 CSSPropertyID cssPropertyID = static_cast<CSSPropertyID>(id); |
| 54 | 54 |
| 55 switch (cssPropertyID) { | 55 switch (cssPropertyID) { |
| 56 // Begin at 2, because 1 is reserved for totalPagesMeasuredCSSSampleId. | 56 // Begin at 2, because 1 is reserved for totalPagesMeasuredCSSSampleId. |
| 57 case CSSPropertyColor: return 2; | 57 case CSSPropertyColor: return 2; |
| 58 case CSSPropertyDirection: return 3; | 58 case CSSPropertyDirection: return 3; |
| 59 case CSSPropertyDisplay: return 4; | 59 case CSSPropertyDisplay: return 4; |
| 60 case CSSPropertyFont: return 5; | 60 case CSSPropertyFont: return 5; |
| 61 case CSSPropertyFontFamily: return 6; | 61 case CSSPropertyFontFamily: return 6; |
| 62 case CSSPropertyFontSize: return 7; | 62 case CSSPropertyFontSize: return 7; |
| 63 case CSSPropertyFontStyle: return 8; | 63 case CSSPropertyFontStyle: return 8; |
| (...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 case CSSPropertyMotionRotation: return 459; | 495 case CSSPropertyMotionRotation: return 459; |
| 496 case CSSPropertyMotion: return 460; | 496 case CSSPropertyMotion: return 460; |
| 497 case CSSPropertyX: return 461; | 497 case CSSPropertyX: return 461; |
| 498 case CSSPropertyY: return 462; | 498 case CSSPropertyY: return 462; |
| 499 case CSSPropertyRx: return 463; | 499 case CSSPropertyRx: return 463; |
| 500 case CSSPropertyRy: return 464; | 500 case CSSPropertyRy: return 464; |
| 501 case CSSPropertyFontSizeAdjust: return 465; | 501 case CSSPropertyFontSizeAdjust: return 465; |
| 502 case CSSPropertyCx: return 466; | 502 case CSSPropertyCx: return 466; |
| 503 case CSSPropertyCy: return 467; | 503 case CSSPropertyCy: return 467; |
| 504 case CSSPropertyR: return 468; | 504 case CSSPropertyR: return 468; |
| 505 case CSSPropertyAliasEpubCaptionSide: return 469; |
| 506 case CSSPropertyAliasEpubTextCombine: return 470; |
| 507 case CSSPropertyAliasEpubTextEmphasis: return 471; |
| 508 case CSSPropertyAliasEpubTextEmphasisColor: return 472; |
| 509 case CSSPropertyAliasEpubTextEmphasisStyle: return 473; |
| 510 case CSSPropertyAliasEpubTextOrientation: return 474; |
| 511 case CSSPropertyAliasEpubTextTransform: return 475; |
| 512 case CSSPropertyAliasEpubWordBreak: return 476; |
| 513 case CSSPropertyAliasEpubWritingMode: return 477; |
| 514 case CSSPropertyAliasWebkitAlignContent: return 478; |
| 515 case CSSPropertyAliasWebkitAlignItems: return 479; |
| 516 case CSSPropertyAliasWebkitAlignSelf: return 480; |
| 517 case CSSPropertyAliasWebkitBorderBottomLeftRadius: return 481; |
| 518 case CSSPropertyAliasWebkitBorderBottomRightRadius: return 482; |
| 519 case CSSPropertyAliasWebkitBorderTopLeftRadius: return 483; |
| 520 case CSSPropertyAliasWebkitBorderTopRightRadius: return 484; |
| 521 case CSSPropertyAliasWebkitBoxSizing: return 485; |
| 522 case CSSPropertyAliasWebkitFlex: return 486; |
| 523 case CSSPropertyAliasWebkitFlexBasis: return 487; |
| 524 case CSSPropertyAliasWebkitFlexDirection: return 488; |
| 525 case CSSPropertyAliasWebkitFlexFlow: return 489; |
| 526 case CSSPropertyAliasWebkitFlexGrow: return 490; |
| 527 case CSSPropertyAliasWebkitFlexShrink: return 491; |
| 528 case CSSPropertyAliasWebkitFlexWrap: return 492; |
| 529 case CSSPropertyAliasWebkitJustifyContent: return 493; |
| 530 case CSSPropertyAliasWebkitOpacity: return 494; |
| 531 case CSSPropertyAliasWebkitOrder: return 495; |
| 532 case CSSPropertyAliasWebkitShapeImageThreshold: return 496; |
| 533 case CSSPropertyAliasWebkitShapeMargin: return 497; |
| 534 case CSSPropertyAliasWebkitShapeOutside: return 498; |
| 505 | 535 |
| 506 // 1. Add new features above this line (don't change the assigned numbers of
the existing | 536 // 1. Add new features above this line (don't change the assigned numbers of
the existing |
| 507 // items). | 537 // items). |
| 508 // 2. Update maximumCSSSampleId() with the new maximum value. | 538 // 2. Update maximumCSSSampleId() with the new maximum value. |
| 509 // 3. Run the update_use_counter_css.py script in | 539 // 3. Run the update_use_counter_css.py script in |
| 510 // chromium/src/tools/metrics/histograms to update the UMA histogram names. | 540 // chromium/src/tools/metrics/histograms to update the UMA histogram names. |
| 511 | 541 |
| 512 case CSSPropertyInvalid: | 542 case CSSPropertyInvalid: |
| 513 ASSERT_NOT_REACHED(); | 543 ASSERT_NOT_REACHED(); |
| 514 return 0; | 544 return 0; |
| 515 } | 545 } |
| 516 | 546 |
| 517 ASSERT_NOT_REACHED(); | 547 ASSERT_NOT_REACHED(); |
| 518 return 0; | 548 return 0; |
| 519 } | 549 } |
| 520 | 550 |
| 521 static int maximumCSSSampleId() { return 468; } | 551 static int maximumCSSSampleId() { return 498; } |
| 522 | 552 |
| 523 void UseCounter::muteForInspector() | 553 void UseCounter::muteForInspector() |
| 524 { | 554 { |
| 525 UseCounter::m_muteCount++; | 555 UseCounter::m_muteCount++; |
| 526 } | 556 } |
| 527 | 557 |
| 528 void UseCounter::unmuteForInspector() | 558 void UseCounter::unmuteForInspector() |
| 529 { | 559 { |
| 530 UseCounter::m_muteCount--; | 560 UseCounter::m_muteCount--; |
| 531 } | 561 } |
| 532 | 562 |
| 533 UseCounter::UseCounter() | 563 UseCounter::UseCounter() |
| 534 { | 564 { |
| 535 m_CSSFeatureBits.ensureSize(lastCSSProperty + 1); | 565 m_CSSFeatureBits.ensureSize(lastUnresolvedCSSProperty + 1); |
| 536 m_CSSFeatureBits.clearAll(); | 566 m_CSSFeatureBits.clearAll(); |
| 537 } | 567 } |
| 538 | 568 |
| 539 UseCounter::~UseCounter() | 569 UseCounter::~UseCounter() |
| 540 { | 570 { |
| 541 // We always log PageDestruction so that we have a scale for the rest of the
features. | 571 // We always log PageDestruction so that we have a scale for the rest of the
features. |
| 542 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver",
PageDestruction, NumberOfFeatures); | 572 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver",
PageDestruction, NumberOfFeatures); |
| 543 | 573 |
| 544 updateMeasurements(); | 574 updateMeasurements(); |
| 545 } | 575 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 556 | 586 |
| 557 void UseCounter::updateMeasurements() | 587 void UseCounter::updateMeasurements() |
| 558 { | 588 { |
| 559 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver",
PageVisits, NumberOfFeatures); | 589 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserver",
PageVisits, NumberOfFeatures); |
| 560 m_countBits.updateMeasurements(); | 590 m_countBits.updateMeasurements(); |
| 561 | 591 |
| 562 // FIXME: Sometimes this function is called more than once per page. The fol
lowing | 592 // FIXME: Sometimes this function is called more than once per page. The fol
lowing |
| 563 // bool guards against incrementing the page count when there are no
CSS | 593 // bool guards against incrementing the page count when there are no
CSS |
| 564 // bits set. http://crbug.com/236262. | 594 // bits set. http://crbug.com/236262. |
| 565 bool needsPagesMeasuredUpdate = false; | 595 bool needsPagesMeasuredUpdate = false; |
| 566 for (int i = firstCSSProperty; i <= lastCSSProperty; ++i) { | 596 for (int i = firstCSSProperty; i <= lastUnresolvedCSSProperty; ++i) { |
| 567 if (m_CSSFeatureBits.quickGet(i)) { | 597 if (m_CSSFeatureBits.quickGet(i)) { |
| 568 int cssSampleId = mapCSSPropertyIdToCSSSampleIdForHistogram(i); | 598 int cssSampleId = mapCSSPropertyIdToCSSSampleIdForHistogram(i); |
| 569 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObs
erver.CSSProperties", cssSampleId, maximumCSSSampleId()); | 599 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObs
erver.CSSProperties", cssSampleId, maximumCSSSampleId()); |
| 570 needsPagesMeasuredUpdate = true; | 600 needsPagesMeasuredUpdate = true; |
| 571 } | 601 } |
| 572 } | 602 } |
| 573 | 603 |
| 574 if (needsPagesMeasuredUpdate) | 604 if (needsPagesMeasuredUpdate) |
| 575 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserve
r.CSSProperties", totalPagesMeasuredCSSSampleId(), maximumCSSSampleId()); | 605 blink::Platform::current()->histogramEnumeration("WebCore.FeatureObserve
r.CSSProperties", totalPagesMeasuredCSSSampleId(), maximumCSSSampleId()); |
| 576 | 606 |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 | 901 |
| 872 // Features that aren't deprecated don't have a deprecation message. | 902 // Features that aren't deprecated don't have a deprecation message. |
| 873 default: | 903 default: |
| 874 return String(); | 904 return String(); |
| 875 } | 905 } |
| 876 } | 906 } |
| 877 | 907 |
| 878 void UseCounter::count(CSSParserContext context, CSSPropertyID feature) | 908 void UseCounter::count(CSSParserContext context, CSSPropertyID feature) |
| 879 { | 909 { |
| 880 ASSERT(feature >= firstCSSProperty); | 910 ASSERT(feature >= firstCSSProperty); |
| 881 ASSERT(feature <= lastCSSProperty); | 911 ASSERT(feature <= lastUnresolvedCSSProperty); |
| 882 | 912 |
| 883 if (!isUseCounterEnabledForMode(context.mode())) | 913 if (!isUseCounterEnabledForMode(context.mode())) |
| 884 return; | 914 return; |
| 885 | 915 |
| 886 m_CSSFeatureBits.quickSet(feature); | 916 m_CSSFeatureBits.quickSet(feature); |
| 887 } | 917 } |
| 888 | 918 |
| 889 void UseCounter::count(Feature feature) | 919 void UseCounter::count(Feature feature) |
| 890 { | 920 { |
| 891 ASSERT(deprecationMessage(feature).isEmpty()); | 921 ASSERT(deprecationMessage(feature).isEmpty()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 909 UseCounter* UseCounter::getFrom(const StyleSheetContents* sheetContents) | 939 UseCounter* UseCounter::getFrom(const StyleSheetContents* sheetContents) |
| 910 { | 940 { |
| 911 // FIXME: We may want to handle stylesheets that have multiple owners | 941 // FIXME: We may want to handle stylesheets that have multiple owners |
| 912 // http://crbug.com/242125 | 942 // http://crbug.com/242125 |
| 913 if (sheetContents && sheetContents->hasSingleOwnerNode()) | 943 if (sheetContents && sheetContents->hasSingleOwnerNode()) |
| 914 return getFrom(sheetContents->singleOwnerDocument()); | 944 return getFrom(sheetContents->singleOwnerDocument()); |
| 915 return 0; | 945 return 0; |
| 916 } | 946 } |
| 917 | 947 |
| 918 } // namespace blink | 948 } // namespace blink |
| OLD | NEW |