Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1263)

Unified Diff: Source/core/page/DeprecationAgent.cpp

Issue 14320022: Warn developers about deprecated features only once per page-load. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/page/DeprecationAgent.cpp
diff --git a/Source/core/page/UseCounter.cpp b/Source/core/page/DeprecationAgent.cpp
similarity index 53%
copy from Source/core/page/UseCounter.cpp
copy to Source/core/page/DeprecationAgent.cpp
index 35eb07474e73b3f1423f8c9d1d0aa63a1d90138c..30768186b2a378c8fc21ff1d5f2c0192f09abc64 100644
--- a/Source/core/page/UseCounter.cpp
+++ b/Source/core/page/DeprecationAgent.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Google, Inc. All rights reserved.
+ * Copyright (C) 2013 Google, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -24,49 +24,39 @@
*/
#include "config.h"
-#include "UseCounter.h"
+#include "DeprecationAgent.h"
-#include "DOMWindow.h"
#include "Document.h"
-#include "HistogramSupport.h"
#include "Page.h"
+#include "PageConsole.h"
+#include <wtf/BitVector.h>
+#include <wtf/Noncopyable.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
+#include <wtf/text/WTFString.h>
namespace WebCore {
-UseCounter::UseCounter()
-{
-}
+namespace {
-UseCounter::~UseCounter()
-{
- // We always log PageDestruction so that we have a scale for the rest of the features.
- HistogramSupport::histogramEnumeration("WebCore.FeatureObserver", PageDestruction, NumberOfFeatures);
+// Ensure that this stays in sync with the Feature enum.
+static const char* const deprecationMessages[] = {
+ "The 'X-WebKit-CSP' headers are deprecated; please consider using the canonical 'Content-Security-Policy' header instead."
+};
+
+// COMPILE_ASSERT(WTF_ARRAY_LENGTH(deprecationMessages) == static_cast<int>(WebCore::DeprecationAgent::NumberOfFeatures), DeprecationMessages_matches_Feature_enum);
pfeldman 2013/04/19 13:04:22 It should work, right?
- updateMeasurements();
}
-void UseCounter::updateMeasurements()
+DeprecationAgent::DeprecationAgent()
{
- HistogramSupport::histogramEnumeration("WebCore.FeatureObserver", PageVisits, NumberOfFeatures);
-
- if (!m_countBits)
- return;
-
- for (unsigned i = 0; i < NumberOfFeatures; ++i) {
- if (m_countBits->quickGet(i))
- HistogramSupport::histogramEnumeration("WebCore.FeatureObserver", i, NumberOfFeatures);
- }
-
- // Clearing count bits is timing sensitive.
- m_countBits->clearAll();
}
-void UseCounter::didCommitLoad()
+DeprecationAgent::~DeprecationAgent()
{
- updateMeasurements();
}
-void UseCounter::observe(Document* document, Feature feature)
+void DeprecationAgent::notify(Document* document, Feature feature)
{
if (!document)
return;
@@ -75,13 +65,24 @@ void UseCounter::observe(Document* document, Feature feature)
if (!page)
return;
- page->useCounter()->didObserve(feature);
+ page->deprecationAgent()->sendNotification(page->console(), feature);
}
-void UseCounter::observe(DOMWindow* domWindow, Feature feature)
+void DeprecationAgent::sendNotification(PageConsole* console, Feature feature)
{
- ASSERT(domWindow);
- observe(domWindow->document(), feature);
+ ASSERT(feature < NumberOfFeatures);
+ ASSERT(console);
+
+ if (!m_countBits) {
+ m_countBits = adoptPtr(new BitVector(NumberOfFeatures));
+ m_countBits->clearAll();
+ }
+
+ if (m_countBits->quickGet(feature))
pfeldman 2013/04/19 13:04:22 Is this covered with the tests? I.e. are you gener
+ return;
+
+ m_countBits->quickSet(feature);
+ console->addMessage(DeprecationMessageSource, WarningMessageLevel, ASCIILiteral(deprecationMessages[feature]));
}
} // namespace WebCore

Powered by Google App Engine
This is Rietveld 408576698