error_console_unittest.cc revision 558790d6acca3451cf3a6b497803a5f07d0bec58
1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// found in the LICENSE file. 4558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 5558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "chrome/browser/extensions/error_console/error_console.h" 6558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 7558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "base/memory/scoped_ptr.h" 8558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "base/strings/string16.h" 9558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "base/strings/utf_string_conversions.h" 10558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "chrome/browser/extensions/error_console/extension_error.h" 11558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "chrome/test/base/testing_profile.h" 12558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "extensions/common/id_util.h" 13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 14558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 15558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochusing base::string16; 16558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochusing base::UTF8ToUTF16; 17558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 18558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochnamespace extensions { 19558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 20558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochnamespace { 21558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochscoped_ptr<ExtensionError> CreateNewManifestError(bool from_incognito) { 23558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch return scoped_ptr<ExtensionError>( 24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch new ManifestParsingError(from_incognito, 25558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch UTF8ToUTF16("source"), 26558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch UTF8ToUTF16("message"), 27558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 0u /* line number */ )); 28558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 30558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} // namespace 31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass ErrorConsoleUnitTest : public testing::Test { 33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public: 34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ErrorConsoleUnitTest() : 35558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch profile_(new TestingProfile), 36558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch error_console_(ErrorConsole::Get(profile_.get())) { 37558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch } 38558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual ~ErrorConsoleUnitTest() { } 39558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 40558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch protected: 41558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch scoped_ptr<TestingProfile> profile_; 42558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ErrorConsole* error_console_; 43558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}; 44558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 45558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Test adding errors, and removing them by reference, by incognito status, 46558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// and in bulk. 47558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST_F(ErrorConsoleUnitTest, AddAndRemoveErrors) { 48558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ASSERT_EQ(0u, error_console_->errors().size()); 49558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 50558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const size_t kNumTotalErrors = 6; 51558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const size_t kNumNonIncognitoErrors = 3; 52558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Populate with both incognito and non-incognito errors (evenly distributed). 53558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch for (size_t i = 0; i < kNumTotalErrors; ++i) 54558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch error_console_->ReportError(CreateNewManifestError(i % 2 == 0)); 55558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 56558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ASSERT_EQ(kNumTotalErrors, error_console_->errors().size()); 57558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 58558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Remove the incognito errors; three errors should remain, and all should 59558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // be from non-incognito contexts. 60558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch error_console_->RemoveIncognitoErrors(); 61558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ASSERT_EQ(kNumNonIncognitoErrors, error_console_->errors().size()); 62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch for (size_t i = 0; i < error_console_->errors().size(); ++i) 63558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ASSERT_FALSE(error_console_->errors()[i]->from_incognito()); 64558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 65558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Remove an error by address. 66558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch error_console_->RemoveError(error_console_->errors()[1]); 67558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ASSERT_EQ(kNumNonIncognitoErrors - 1, error_console_->errors().size()); 68558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 69558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch // Remove all remaining errors. 70558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch error_console_->RemoveAllErrors(); 71558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch ASSERT_EQ(0u, error_console_->errors().size()); 72558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 73558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 74558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} // namespace extensions 75