| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <vector> | 5 #include <vector> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <cstdio> | 7 #include <cstdio> |
| 8 | 8 |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| 11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
| 12 #include "base/process_util.h" | 12 #include "base/process_util.h" |
| 13 #include "base/shared_memory.h" | 13 #include "base/shared_memory.h" |
| 14 #include "base/string_util.h" | 14 #include "base/string_util.h" |
| 15 #include "chrome/browser/chrome_thread.h" |
| 15 #include "chrome/browser/visitedlink_master.h" | 16 #include "chrome/browser/visitedlink_master.h" |
| 16 #include "chrome/browser/visitedlink_event_listener.h" | 17 #include "chrome/browser/visitedlink_event_listener.h" |
| 17 #include "chrome/browser/renderer_host/browser_render_process_host.h" | 18 #include "chrome/browser/renderer_host/browser_render_process_host.h" |
| 18 #include "chrome/browser/renderer_host/test/test_render_view_host.h" | 19 #include "chrome/browser/renderer_host/test/test_render_view_host.h" |
| 19 #include "chrome/common/render_messages.h" | 20 #include "chrome/common/render_messages.h" |
| 20 #include "chrome/renderer/visitedlink_slave.h" | 21 #include "chrome/renderer/visitedlink_slave.h" |
| 21 #include "googleurl/src/gurl.h" | 22 #include "googleurl/src/gurl.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 23 | 24 |
| 24 namespace { | 25 namespace { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 int reset_count() const { return reset_count_; } | 65 int reset_count() const { return reset_count_; } |
| 65 int add_count() const { return add_count_; } | 66 int add_count() const { return add_count_; } |
| 66 | 67 |
| 67 private: | 68 private: |
| 68 int reset_count_; | 69 int reset_count_; |
| 69 int add_count_; | 70 int add_count_; |
| 70 }; | 71 }; |
| 71 | 72 |
| 72 class VisitedLinkTest : public testing::Test { | 73 class VisitedLinkTest : public testing::Test { |
| 73 protected: | 74 protected: |
| 75 VisitedLinkTest() |
| 76 : ui_thread_(ChromeThread::UI, &message_loop_), |
| 77 file_thread_(ChromeThread::FILE, &message_loop_) {} |
| 74 // Initialize the history system. This should be called before InitVisited(). | 78 // Initialize the history system. This should be called before InitVisited(). |
| 75 bool InitHistory() { | 79 bool InitHistory() { |
| 76 history_service_ = new HistoryService; | 80 history_service_ = new HistoryService; |
| 77 return history_service_->Init(history_dir_, NULL); | 81 return history_service_->Init(history_dir_, NULL); |
| 78 } | 82 } |
| 79 | 83 |
| 80 // Initializes the visited link objects. Pass in the size that you want a | 84 // Initializes the visited link objects. Pass in the size that you want a |
| 81 // freshly created table to be. 0 means use the default. | 85 // freshly created table to be. 0 means use the default. |
| 82 // | 86 // |
| 83 // |suppress_rebuild| is set when we're not testing rebuilding, see | 87 // |suppress_rebuild| is set when we're not testing rebuilding, see |
| 84 // the VisitedLinkMaster constructor. | 88 // the VisitedLinkMaster constructor. |
| 85 bool InitVisited(int initial_size, bool suppress_rebuild) { | 89 bool InitVisited(int initial_size, bool suppress_rebuild) { |
| 86 // Initialize the visited link system. | 90 // Initialize the visited link system. |
| 87 master_.reset(new VisitedLinkMaster(NULL, &listener_, history_service_, | 91 master_.reset(new VisitedLinkMaster(&listener_, history_service_, |
| 88 suppress_rebuild, visited_file_, | 92 suppress_rebuild, visited_file_, |
| 89 initial_size)); | 93 initial_size)); |
| 90 return master_->Init(); | 94 return master_->Init(); |
| 91 } | 95 } |
| 92 | 96 |
| 93 // May be called multiple times (some tests will do this to clear things, | 97 // May be called multiple times (some tests will do this to clear things, |
| 94 // and TearDown will do this to make sure eveything is shiny before quitting. | 98 // and TearDown will do this to make sure eveything is shiny before quitting. |
| 95 void ClearDB() { | 99 void ClearDB() { |
| 96 if (master_.get()) | 100 if (master_.get()) |
| 97 master_.reset(NULL); | 101 master_.reset(NULL); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 visited_file_ = history_dir_.Append(FILE_PATH_LITERAL("VisitedLinks")); | 167 visited_file_ = history_dir_.Append(FILE_PATH_LITERAL("VisitedLinks")); |
| 164 listener_.SetUp(); | 168 listener_.SetUp(); |
| 165 } | 169 } |
| 166 | 170 |
| 167 virtual void TearDown() { | 171 virtual void TearDown() { |
| 168 ClearDB(); | 172 ClearDB(); |
| 169 file_util::Delete(history_dir_, true); | 173 file_util::Delete(history_dir_, true); |
| 170 } | 174 } |
| 171 | 175 |
| 172 MessageLoop message_loop_; | 176 MessageLoop message_loop_; |
| 177 ChromeThread ui_thread_; |
| 178 ChromeThread file_thread_; |
| 173 | 179 |
| 174 // Filenames for the services; | 180 // Filenames for the services; |
| 175 FilePath history_dir_; | 181 FilePath history_dir_; |
| 176 FilePath visited_file_; | 182 FilePath visited_file_; |
| 177 | 183 |
| 178 scoped_ptr<VisitedLinkMaster> master_; | 184 scoped_ptr<VisitedLinkMaster> master_; |
| 179 scoped_refptr<HistoryService> history_service_; | 185 scoped_refptr<HistoryService> history_service_; |
| 180 TrackingVisitedLinkEventListener listener_; | 186 TrackingVisitedLinkEventListener listener_; |
| 181 }; | 187 }; |
| 182 | 188 |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 class VisitCountingProfile : public TestingProfile { | 451 class VisitCountingProfile : public TestingProfile { |
| 446 public: | 452 public: |
| 447 explicit VisitCountingProfile(VisitedLinkEventListener* event_listener) | 453 explicit VisitCountingProfile(VisitedLinkEventListener* event_listener) |
| 448 : add_count_(0), | 454 : add_count_(0), |
| 449 add_event_count_(0), | 455 add_event_count_(0), |
| 450 reset_event_count_(0), | 456 reset_event_count_(0), |
| 451 event_listener_(event_listener) {} | 457 event_listener_(event_listener) {} |
| 452 | 458 |
| 453 virtual VisitedLinkMaster* GetVisitedLinkMaster() { | 459 virtual VisitedLinkMaster* GetVisitedLinkMaster() { |
| 454 if (!visited_link_master_.get()) { | 460 if (!visited_link_master_.get()) { |
| 455 visited_link_master_.reset( | 461 visited_link_master_.reset(new VisitedLinkMaster(event_listener_, this)); |
| 456 new VisitedLinkMaster(NULL, event_listener_, this)); | |
| 457 visited_link_master_->Init(); | 462 visited_link_master_->Init(); |
| 458 } | 463 } |
| 459 return visited_link_master_.get(); | 464 return visited_link_master_.get(); |
| 460 } | 465 } |
| 461 | 466 |
| 462 void CountAddEvent(int by) { | 467 void CountAddEvent(int by) { |
| 463 add_count_ += by; | 468 add_count_ += by; |
| 464 add_event_count_++; | 469 add_event_count_++; |
| 465 } | 470 } |
| 466 | 471 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 void set_relay_mode(bool mode) { relay_mode_ = mode; } | 568 void set_relay_mode(bool mode) { relay_mode_ = mode; } |
| 564 | 569 |
| 565 private: | 570 private: |
| 566 bool relay_mode_; | 571 bool relay_mode_; |
| 567 | 572 |
| 568 DISALLOW_COPY_AND_ASSIGN(VisitedLinkRenderProcessHostFactory); | 573 DISALLOW_COPY_AND_ASSIGN(VisitedLinkRenderProcessHostFactory); |
| 569 }; | 574 }; |
| 570 | 575 |
| 571 class VisitedLinkEventsTest : public RenderViewHostTestHarness { | 576 class VisitedLinkEventsTest : public RenderViewHostTestHarness { |
| 572 public: | 577 public: |
| 573 VisitedLinkEventsTest() : RenderViewHostTestHarness() {} | 578 VisitedLinkEventsTest() |
| 579 : RenderViewHostTestHarness(), |
| 580 file_thread_(ChromeThread::FILE, &message_loop_) {} |
| 581 ~VisitedLinkEventsTest() { |
| 582 // This ends up using the file thread to schedule the delete. |
| 583 profile_.reset(); |
| 584 message_loop_.RunAllPending(); |
| 585 } |
| 574 virtual void SetFactoryMode() {} | 586 virtual void SetFactoryMode() {} |
| 575 virtual void SetUp() { | 587 virtual void SetUp() { |
| 576 SetFactoryMode(); | 588 SetFactoryMode(); |
| 577 event_listener_.reset(new VisitedLinkEventListener()); | 589 event_listener_.reset(new VisitedLinkEventListener()); |
| 578 rvh_factory_.set_render_process_host_factory(&vc_rph_factory_); | 590 rvh_factory_.set_render_process_host_factory(&vc_rph_factory_); |
| 579 profile_.reset(new VisitCountingProfile(event_listener_.get())); | 591 profile_.reset(new VisitCountingProfile(event_listener_.get())); |
| 580 RenderViewHostTestHarness::SetUp(); | 592 RenderViewHostTestHarness::SetUp(); |
| 581 } | 593 } |
| 582 | 594 |
| 583 VisitCountingProfile* profile() const { | 595 VisitCountingProfile* profile() const { |
| 584 return static_cast<VisitCountingProfile*>(profile_.get()); | 596 return static_cast<VisitCountingProfile*>(profile_.get()); |
| 585 } | 597 } |
| 586 | 598 |
| 587 void WaitForCoalescense() { | 599 void WaitForCoalescense() { |
| 588 // Let the timer fire. | 600 // Let the timer fire. |
| 589 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 601 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| 590 new MessageLoop::QuitTask(), 110); | 602 new MessageLoop::QuitTask(), 110); |
| 591 MessageLoop::current()->Run(); | 603 MessageLoop::current()->Run(); |
| 592 } | 604 } |
| 593 | 605 |
| 594 protected: | 606 protected: |
| 595 VisitedLinkRenderProcessHostFactory vc_rph_factory_; | 607 VisitedLinkRenderProcessHostFactory vc_rph_factory_; |
| 596 | 608 |
| 597 private: | 609 private: |
| 598 scoped_ptr<VisitedLinkEventListener> event_listener_; | 610 scoped_ptr<VisitedLinkEventListener> event_listener_; |
| 611 ChromeThread file_thread_; |
| 599 | 612 |
| 600 DISALLOW_COPY_AND_ASSIGN(VisitedLinkEventsTest); | 613 DISALLOW_COPY_AND_ASSIGN(VisitedLinkEventsTest); |
| 601 }; | 614 }; |
| 602 | 615 |
| 603 class VisitedLinkRelayTest : public VisitedLinkEventsTest { | 616 class VisitedLinkRelayTest : public VisitedLinkEventsTest { |
| 604 public: | 617 public: |
| 605 virtual void SetFactoryMode() { vc_rph_factory_.set_relay_mode(true); } | 618 virtual void SetFactoryMode() { vc_rph_factory_.set_relay_mode(true); } |
| 606 }; | 619 }; |
| 607 | 620 |
| 608 TEST_F(VisitedLinkEventsTest, Coalescense) { | 621 TEST_F(VisitedLinkEventsTest, Coalescense) { |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 EXPECT_EQ(0, profile()->add_event_count()); | 760 EXPECT_EQ(0, profile()->add_event_count()); |
| 748 EXPECT_EQ(0, profile()->reset_event_count()); | 761 EXPECT_EQ(0, profile()->reset_event_count()); |
| 749 | 762 |
| 750 rvh()->CreateRenderView(); | 763 rvh()->CreateRenderView(); |
| 751 | 764 |
| 752 // We should now have just a reset event: adds are eaten up by a reset | 765 // We should now have just a reset event: adds are eaten up by a reset |
| 753 // that followed. | 766 // that followed. |
| 754 EXPECT_EQ(0, profile()->add_event_count()); | 767 EXPECT_EQ(0, profile()->add_event_count()); |
| 755 EXPECT_EQ(1, profile()->reset_event_count()); | 768 EXPECT_EQ(1, profile()->reset_event_count()); |
| 756 } | 769 } |
| OLD | NEW |