- add sources.
[platform/framework/web/crosswalk.git] / src / content / renderer / render_thread_impl_unittest.cc
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