summaryrefslogtreecommitdiffstats
path: root/chrome/browser/geolocation
diff options
context:
space:
mode:
authorbulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 17:34:16 +0000
committerbulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-07 17:34:16 +0000
commita234fdf08955d4fcdf77bebe0ba2f05800a3c31c (patch)
tree563d85ce933d58f5235d47310b35dd541d345dd3 /chrome/browser/geolocation
parent83723f04212bffad8931220b0687d6c6a0030cc5 (diff)
downloadchromium_src-a234fdf08955d4fcdf77bebe0ba2f05800a3c31c.zip
chromium_src-a234fdf08955d4fcdf77bebe0ba2f05800a3c31c.tar.gz
chromium_src-a234fdf08955d4fcdf77bebe0ba2f05800a3c31c.tar.bz2
Revert 43836 - Adds geolocation_permission_context_unittest.cc
(most of this code is already covered by the more complex geolocation_browsertest.cc which traverses far more layers. this is a more specific unittest). TEST=geolocation_permission_context_unittest.cc Valgrind error: http://build.chromium.org/buildbot/memory/builders/Linux%20Tests%20(valgrind)(1)/builds/3857/steps/valgrind%20test:%20unit/logs/stdio Review URL: http://codereview.chromium.org/1596012 TBR=bulach@chromium.org Review URL: http://codereview.chromium.org/1629006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43849 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/geolocation')
-rw-r--r--chrome/browser/geolocation/geolocation_permission_context_unittest.cc250
1 files changed, 0 insertions, 250 deletions
diff --git a/chrome/browser/geolocation/geolocation_permission_context_unittest.cc b/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
deleted file mode 100644
index 3421945..0000000
--- a/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/geolocation/geolocation_permission_context.h"
-
-#include "chrome/browser/geolocation/location_arbitrator.h"
-#include "chrome/browser/geolocation/location_provider.h"
-#include "chrome/browser/geolocation/mock_location_provider.h"
-#include "chrome/browser/renderer_host/mock_render_process_host.h"
-#include "chrome/browser/renderer_host/test/test_render_view_host.h"
-#include "chrome/common/notification_details.h"
-#include "chrome/common/notification_type.h"
-#include "chrome/common/render_messages.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-// TestTabContents short-circuits TAB_CONTENTS_INFOBAR_REMOVED to call
-// InfoBarClosed() directly. We need to observe it and call InfoBarClosed()
-// later.
-class TestTabContentsWithPendingInfoBar : public TestTabContents {
- public:
- TestTabContentsWithPendingInfoBar(Profile* profile, SiteInstance* instance)
- : TestTabContents(profile, instance),
- removed_infobar_delegate_(NULL) {
- }
-
- void Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details) {
- // We need to special case TAB_CONTENTS_INFOBAR_REMOVED to track which
- // delegate was removed and avoid calling InfoBarClosed() supplied in the
- // base class. All other notification types are delegated to the base class.
- switch (type.value) {
- case NotificationType::TAB_CONTENTS_INFOBAR_REMOVED:
- removed_infobar_delegate_ = Details<InfoBarDelegate>(details).ptr();
- break;
- default:
- TestTabContents::Observe(type, source, details);
- break;
- }
- }
-
- InfoBarDelegate* removed_infobar_delegate_;
-};
-
-// This class sets up GeolocationArbitrator and injects
-// TestTabContentsWithPendingInfoBar.
-class GeolocationPermissionContextTests : public RenderViewHostTestHarness {
- public:
- GeolocationPermissionContextTests()
- : RenderViewHostTestHarness(),
- ui_thread_(ChromeThread::UI, MessageLoop::current()),
- tab_contents_with_pending_infobar_(NULL) {
- }
-
- virtual void SetUp() {
- RenderViewHostTestHarness::SetUp();
- GeolocationArbitrator::SetProviderFactoryForTest(
- &NewAutoSuccessMockNetworkLocationProvider);
- SiteInstance* site_instance = contents_->GetSiteInstance();
- tab_contents_with_pending_infobar_ =
- new TestTabContentsWithPendingInfoBar(profile_.get(), site_instance);
- contents_.reset(tab_contents_with_pending_infobar_);
- geolocation_permission_context_ =
- new GeolocationPermissionContext(profile());
- }
-
- virtual void TearDown() {
- RenderViewHostTestHarness::TearDown();
- GeolocationArbitrator::SetProviderFactoryForTest(NULL);
- }
-
- int process_id() {
- return contents()->render_view_host()->process()->id();
- }
-
- int render_id() {
- return contents()->render_view_host()->routing_id();
- }
-
- int bridge_id() {
- // Bridge id is not relevant at this level.
- return 42;
- }
-
- void CheckPermissionMessageSent(int bridge_id, bool allowed) {
- MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
- MessageLoop::current()->Run();
- const IPC::Message* message =
- process()->sink().GetFirstMessageMatching(
- ViewMsg_Geolocation_PermissionSet::ID);
- ASSERT_TRUE(message);
- ViewMsg_Geolocation_PermissionSet::Param param;
- ViewMsg_Geolocation_PermissionSet::Read(message, &param);
- EXPECT_EQ(bridge_id, param.a);
- EXPECT_EQ(allowed, param.b);
- process()->sink().ClearMessages();
- }
-
- protected:
- ChromeThread ui_thread_;
- TestTabContentsWithPendingInfoBar* tab_contents_with_pending_infobar_;
- scoped_refptr<GeolocationPermissionContext> geolocation_permission_context_;
-};
-
-TEST_F(GeolocationPermissionContextTests, SinglePermission) {
- GURL requesting_frame("http://www.example.com/geolocation");
- NavigateAndCommit(requesting_frame);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- geolocation_permission_context_->RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame);
- EXPECT_EQ(1, contents()->infobar_delegate_count());
-}
-
-TEST_F(GeolocationPermissionContextTests, QueuedPermission) {
- GURL requesting_frame_0("http://www.example.com/geolocation");
- GURL requesting_frame_1("http://www.example-2.com/geolocation");
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_1, requesting_frame_0));
-
- NavigateAndCommit(requesting_frame_0);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- // Request permission for two frames.
- geolocation_permission_context_->RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
- geolocation_permission_context_->RequestGeolocationPermission(
- process_id(), render_id(), bridge_id() + 1, requesting_frame_1);
- // Ensure only one infobar is created.
- EXPECT_EQ(1, contents()->infobar_delegate_count());
- ConfirmInfoBarDelegate* infobar_0 =
- contents()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
- std::wstring text_0 = infobar_0->GetMessageText();
-
- // Accept the first frame.
- infobar_0->Accept();
- CheckPermissionMessageSent(bridge_id(), true);
-
- contents()->RemoveInfoBar(infobar_0);
- EXPECT_EQ(infobar_0,
- tab_contents_with_pending_infobar_->removed_infobar_delegate_);
- infobar_0->InfoBarClosed();
- // Now we should have a new infobar for the second frame.
- EXPECT_EQ(1, contents()->infobar_delegate_count());
-
- ConfirmInfoBarDelegate* infobar_1 =
- contents()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
- std::wstring text_1 = infobar_1->GetMessageText();
- EXPECT_NE(text_0, text_1);
-
- // Cancel (block) this frame.
- infobar_1->Cancel();
- CheckPermissionMessageSent(bridge_id() + 1, false);
- contents()->RemoveInfoBar(infobar_1);
- EXPECT_EQ(infobar_1,
- tab_contents_with_pending_infobar_->removed_infobar_delegate_);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- // Ensure the persisted permissions are ok.
- EXPECT_EQ(
- CONTENT_SETTING_ALLOW,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_BLOCK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_1, requesting_frame_0));
-}
-
-TEST_F(GeolocationPermissionContextTests, CancelGeolocationPermissionRequest) {
- GURL requesting_frame_0("http://www.example.com/geolocation");
- GURL requesting_frame_1("http://www.example-2.com/geolocation");
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_1, requesting_frame_0));
-
- NavigateAndCommit(requesting_frame_0);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- // Request permission for two frames.
- geolocation_permission_context_->RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
- geolocation_permission_context_->RequestGeolocationPermission(
- process_id(), render_id(), bridge_id() + 1, requesting_frame_1);
- EXPECT_EQ(1, contents()->infobar_delegate_count());
-
- ConfirmInfoBarDelegate* infobar_0 =
- contents()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
- std::wstring text_0 = infobar_0->GetMessageText();
-
- // Simulate the frame going away, ensure the infobar for this frame
- // is removed and the next pending infobar is created.
- geolocation_permission_context_->CancelGeolocationPermissionRequest(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
- EXPECT_EQ(infobar_0,
- tab_contents_with_pending_infobar_->removed_infobar_delegate_);
- infobar_0->InfoBarClosed();
- EXPECT_EQ(1, contents()->infobar_delegate_count());
-
- ConfirmInfoBarDelegate* infobar_1 =
- contents()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
- std::wstring text_1 = infobar_1->GetMessageText();
- EXPECT_NE(text_0, text_1);
-
- // Allow this frame.
- infobar_1->Accept();
- CheckPermissionMessageSent(bridge_id() + 1, true);
- contents()->RemoveInfoBar(infobar_1);
- EXPECT_EQ(infobar_1,
- tab_contents_with_pending_infobar_->removed_infobar_delegate_);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- // Ensure the persisted permissions are ok.
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ALLOW,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame_1, requesting_frame_0));
-}
-
-TEST_F(GeolocationPermissionContextTests, StopUpdating) {
- GURL requesting_frame("http://www.example.com/geolocation");
- NavigateAndCommit(requesting_frame);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- geolocation_permission_context_->RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame);
- EXPECT_EQ(1, contents()->infobar_delegate_count());
- ConfirmInfoBarDelegate* infobar_0 =
- contents()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
-
- geolocation_permission_context_->StopUpdatingRequested(
- process_id(), render_id(), bridge_id());
- EXPECT_EQ(infobar_0,
- tab_contents_with_pending_infobar_->removed_infobar_delegate_);
- EXPECT_EQ(0, contents()->infobar_delegate_count());
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- profile()->GetGeolocationContentSettingsMap()->GetContentSetting(
- requesting_frame, requesting_frame));
-}