Home | History | Annotate | Download | only in renderer
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "content/renderer/render_thread_impl.h"
      6 #include "testing/gtest/include/gtest/gtest.h"
      7 
      8 #include <string>
      9 
     10 namespace content {
     11 
     12 class RenderThreadImplUnittest : public testing::Test {
     13  public:
     14   RenderThreadImplUnittest()
     15       : kCustomizableHistogram_("Histogram1"),
     16         kNormalHistogram_("Histogram2") {}
     17   virtual ~RenderThreadImplUnittest() {}
     18  protected:
     19   virtual void SetUp() OVERRIDE {
     20     histogram_customizer_.custom_histograms_.clear();
     21     histogram_customizer_.custom_histograms_.insert(kCustomizableHistogram_);
     22   }
     23   RenderThreadImpl::HistogramCustomizer histogram_customizer_;
     24   const char* kCustomizableHistogram_;
     25   const char* kNormalHistogram_;
     26 };
     27 
     28 TEST_F(RenderThreadImplUnittest, CustomHistogramsWithNoNavigations) {
     29   // First there is no page -> no custom histograms.
     30   EXPECT_EQ(kCustomizableHistogram_,
     31             histogram_customizer_.ConvertToCustomHistogramName(
     32                 kCustomizableHistogram_));
     33   EXPECT_EQ(kNormalHistogram_,
     34             histogram_customizer_.ConvertToCustomHistogramName(
     35                 kNormalHistogram_));
     36 }
     37 
     38 TEST_F(RenderThreadImplUnittest, CustomHistogramsForOneRenderView) {
     39   histogram_customizer_.RenderViewNavigatedToHost("mail.google.com", 1);
     40   EXPECT_EQ(std::string(kCustomizableHistogram_) + ".gmail",
     41             histogram_customizer_.ConvertToCustomHistogramName(
     42                 kCustomizableHistogram_));
     43   EXPECT_EQ(kNormalHistogram_,
     44             histogram_customizer_.ConvertToCustomHistogramName(
     45                 kNormalHistogram_));
     46   histogram_customizer_.RenderViewNavigatedToHost("docs.google.com", 1);
     47   EXPECT_EQ(std::string(kCustomizableHistogram_) + ".docs",
     48             histogram_customizer_.ConvertToCustomHistogramName(
     49                 kCustomizableHistogram_));
     50   histogram_customizer_.RenderViewNavigatedToHost("nottracked.com", 1);
     51   EXPECT_EQ(kCustomizableHistogram_,
     52             histogram_customizer_.ConvertToCustomHistogramName(
     53                 kCustomizableHistogram_));
     54 }
     55 
     56 TEST_F(RenderThreadImplUnittest, CustomHistogramsForTwoRenderViews) {
     57   // First there is only one view.
     58   histogram_customizer_.RenderViewNavigatedToHost("mail.google.com", 1);
     59   // Second view created and it navigates to the same host -> we can have a
     60   // custom diagram.
     61   histogram_customizer_.RenderViewNavigatedToHost("mail.google.com", 2);
     62   EXPECT_EQ(std::string(kCustomizableHistogram_) + ".gmail",
     63             histogram_customizer_.ConvertToCustomHistogramName(
     64                 kCustomizableHistogram_));
     65   EXPECT_EQ(kNormalHistogram_,
     66             histogram_customizer_.ConvertToCustomHistogramName(
     67                 kNormalHistogram_));
     68   // Now the views diverge (one of them navigates to a different host) -> no
     69   // custom diagram.
     70   histogram_customizer_.RenderViewNavigatedToHost("docs.google.com", 2);
     71   EXPECT_EQ(kCustomizableHistogram_,
     72             histogram_customizer_.ConvertToCustomHistogramName(
     73                 kCustomizableHistogram_));
     74   // After this point, there will never be a custom diagram again, even if the
     75   // view navigated back to the common host.
     76   histogram_customizer_.RenderViewNavigatedToHost("mail.google.com", 2);
     77   EXPECT_EQ(kCustomizableHistogram_,
     78             histogram_customizer_.ConvertToCustomHistogramName(
     79                 kCustomizableHistogram_));
     80 }
     81 
     82 }  // namespace content
     83