Commit b120440b authored by sorin's avatar sorin Committed by Commit bot

Move the unit tests files side-by-side with the corresponding .cc files.

This is a mechanical change.

The idea here is that we want to simplify the directory tree of
the component updater files and easily see what compilation unit has
tests and which one does not.

This change includes some whitespace changes due to running git cl format.

BUG=479904

Review URL: https://codereview.chromium.org/1102103002

Cr-Commit-Position: refs/heads/master@{#327054}
parent 828a33d4
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include <string>
#include <vector>
#include "base/command_line.h" #include "base/command_line.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "chrome/browser/component_updater/chrome_component_updater_configurator.h" #include "chrome/browser/component_updater/chrome_component_updater_configurator.h"
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
using component_updater::CldComponentInstallerTraits; using component_updater::CldComponentInstallerTraits;
namespace { namespace {
// This has to match what's in cld_component_installer.cc. // This has to match what's in cld_component_installer.cc.
const base::FilePath::CharType kTestCldDataFileName[] = const base::FilePath::CharType kTestCldDataFileName[] =
FILE_PATH_LITERAL("cld2_data.bin"); FILE_PATH_LITERAL("cld2_data.bin");
...@@ -57,6 +58,7 @@ class CldComponentInstallerTest : public PlatformTest { ...@@ -57,6 +58,7 @@ class CldComponentInstallerTest : public PlatformTest {
// Restore sanity checks. // Restore sanity checks.
translate::CldDataSource::EnableSanityChecksForTest(); translate::CldDataSource::EnableSanityChecksForTest();
} }
protected: protected:
base::ScopedTempDir temp_dir_; base::ScopedTempDir temp_dir_;
CldComponentInstallerTraits traits_; CldComponentInstallerTraits traits_;
...@@ -68,8 +70,7 @@ class CldComponentInstallerTest : public PlatformTest { ...@@ -68,8 +70,7 @@ class CldComponentInstallerTest : public PlatformTest {
TEST_F(CldComponentInstallerTest, SetLatestCldDataFile) { TEST_F(CldComponentInstallerTest, SetLatestCldDataFile) {
const base::FilePath expected(FILE_PATH_LITERAL("test/foo.test")); const base::FilePath expected(FILE_PATH_LITERAL("test/foo.test"));
CldComponentInstallerTraits::SetLatestCldDataFile(expected); CldComponentInstallerTraits::SetLatestCldDataFile(expected);
base::FilePath result = base::FilePath result = CldComponentInstallerTraits::GetLatestCldDataFile();
CldComponentInstallerTraits::GetLatestCldDataFile();
ASSERT_EQ(expected, result); ASSERT_EQ(expected, result);
} }
...@@ -79,8 +80,9 @@ TEST_F(CldComponentInstallerTest, VerifyInstallation) { ...@@ -79,8 +80,9 @@ TEST_F(CldComponentInstallerTest, VerifyInstallation) {
const base::DictionaryValue manifest; const base::DictionaryValue manifest;
ASSERT_FALSE(traits_.VerifyInstallation(manifest, temp_dir_.path())); ASSERT_FALSE(traits_.VerifyInstallation(manifest, temp_dir_.path()));
const base::FilePath data_file_dir = const base::FilePath data_file_dir =
temp_dir_.path().Append(FILE_PATH_LITERAL("_platform_specific")).Append( temp_dir_.path()
FILE_PATH_LITERAL("all")); .Append(FILE_PATH_LITERAL("_platform_specific"))
.Append(FILE_PATH_LITERAL("all"));
ASSERT_TRUE(base::CreateDirectory(data_file_dir)); ASSERT_TRUE(base::CreateDirectory(data_file_dir));
const base::FilePath data_file = data_file_dir.Append(kTestCldDataFileName); const base::FilePath data_file = data_file_dir.Append(kTestCldDataFileName);
const std::string test_data("fake cld2 data file content here :)"); const std::string test_data("fake cld2 data file content here :)");
...@@ -123,11 +125,9 @@ TEST_F(CldComponentInstallerTest, ComponentReady) { ...@@ -123,11 +125,9 @@ TEST_F(CldComponentInstallerTest, ComponentReady) {
const base::FilePath install_dir(FILE_PATH_LITERAL("/foo")); const base::FilePath install_dir(FILE_PATH_LITERAL("/foo"));
const base::Version version("1.2.3.4"); const base::Version version("1.2.3.4");
traits_.ComponentReady(version, install_dir, manifest.Pass()); traits_.ComponentReady(version, install_dir, manifest.Pass());
base::FilePath result = base::FilePath result = CldComponentInstallerTraits::GetLatestCldDataFile();
CldComponentInstallerTraits::GetLatestCldDataFile(); ASSERT_TRUE(
ASSERT_TRUE(StartsWith(result.AsUTF16Unsafe(), StartsWith(result.AsUTF16Unsafe(), install_dir.AsUTF16Unsafe(), true));
install_dir.AsUTF16Unsafe(),
true));
ASSERT_TRUE(EndsWith(result.value(), kTestCldDataFileName, true)); ASSERT_TRUE(EndsWith(result.value(), kTestCldDataFileName, true));
} }
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/component_updater/flash_component_installer.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/files/file_util.h" #include "base/files/file_util.h"
#include "base/json/json_file_value_serializer.h" #include "base/json/json_file_value_serializer.h"
...@@ -12,6 +10,7 @@ ...@@ -12,6 +10,7 @@
#include "base/path_service.h" #include "base/path_service.h"
#include "base/version.h" #include "base/version.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/component_updater/flash_component_installer.h"
#include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_paths.h"
#include "chrome/common/pepper_flash.h" #include "chrome/common/pepper_flash.h"
#include "content/public/test/test_browser_thread.h" #include "content/public/test/test_browser_thread.h"
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_COMPONENT_UPDATER_TEST_COMPONENT_UPDATER_SERVICE_UNITTEST_H_ #ifndef CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_UPDATER_SERVICE_UNITTEST_H_
#define CHROME_BROWSER_COMPONENT_UPDATER_TEST_COMPONENT_UPDATER_SERVICE_UNITTEST_H_ #define CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_UPDATER_SERVICE_UNITTEST_H_
#include <string> #include <string>
...@@ -99,4 +99,4 @@ class OnDemandTester { ...@@ -99,4 +99,4 @@ class OnDemandTester {
} // namespace component_updater } // namespace component_updater
#endif // CHROME_BROWSER_COMPONENT_UPDATER_TEST_COMPONENT_UPDATER_SERVICE_UNITTEST_H_ #endif // CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_UPDATER_SERVICE_UNITTEST_H_
...@@ -60,10 +60,10 @@ ...@@ -60,10 +60,10 @@
'browser/chrome_elf_init_unittest_win.cc', 'browser/chrome_elf_init_unittest_win.cc',
'browser/chrome_process_singleton_win_unittest.cc', 'browser/chrome_process_singleton_win_unittest.cc',
'browser/command_updater_unittest.cc', 'browser/command_updater_unittest.cc',
'browser/component_updater/test/chrome_component_updater_configurator_unittest.cc', 'browser/component_updater/chrome_component_updater_configurator_unittest.cc',
'browser/component_updater/test/cld_component_installer_unittest.cc', 'browser/component_updater/cld_component_installer_unittest.cc',
'browser/component_updater/test/component_updater_service_unittest.cc', 'browser/component_updater/component_updater_service_unittest.cc',
'browser/component_updater/test/supervised_user_whitelist_installer_unittest.cc', 'browser/component_updater/supervised_user_whitelist_installer_unittest.cc',
'browser/content_settings/content_settings_default_provider_unittest.cc', 'browser/content_settings/content_settings_default_provider_unittest.cc',
'browser/content_settings/content_settings_mock_observer.cc', 'browser/content_settings/content_settings_mock_observer.cc',
'browser/content_settings/content_settings_mock_observer.h', 'browser/content_settings/content_settings_mock_observer.h',
...@@ -1071,7 +1071,7 @@ ...@@ -1071,7 +1071,7 @@
'browser/ui/autofill/mock_autofill_dialog_view_delegate.h', 'browser/ui/autofill/mock_autofill_dialog_view_delegate.h',
], ],
'chrome_unit_tests_plugins_sources': [ 'chrome_unit_tests_plugins_sources': [
'browser/component_updater/test/component_installers_unittest.cc', 'browser/component_updater/component_installers_unittest.cc',
'browser/metrics/plugin_metrics_provider_unittest.cc', 'browser/metrics/plugin_metrics_provider_unittest.cc',
'browser/plugins/plugin_finder_unittest.cc', 'browser/plugins/plugin_finder_unittest.cc',
'browser/plugins/plugin_info_message_filter_unittest.cc', 'browser/plugins/plugin_info_message_filter_unittest.cc',
......
...@@ -524,14 +524,14 @@ ...@@ -524,14 +524,14 @@
'ui/zoom/page_zoom_unittests.cc', 'ui/zoom/page_zoom_unittests.cc',
], ],
'update_client_unittest_sources': [ 'update_client_unittest_sources': [
'update_client/test/component_patcher_unittest.cc', 'update_client/component_patcher_unittest.cc',
'update_client/test/crx_downloader_unittest.cc', 'update_client/crx_downloader_unittest.cc',
'update_client/test/ping_manager_unittest.cc', 'update_client/ping_manager_unittest.cc',
'update_client/test/request_sender_unittest.cc', 'update_client/request_sender_unittest.cc',
'update_client/test/update_checker_unittest.cc', 'update_client/update_checker_unittest.cc',
'update_client/test/update_client_unittest.cc', 'update_client/update_client_unittest.cc',
'update_client/test/update_response_unittest.cc',
'update_client/update_query_params_unittest.cc', 'update_client/update_query_params_unittest.cc',
'update_client/update_response_unittest.cc',
], ],
'url_fixer_unittest_sources': [ 'url_fixer_unittest_sources': [
'url_fixer/url_fixer_unittest.cc', 'url_fixer/url_fixer_unittest.cc',
......
...@@ -83,12 +83,12 @@ ...@@ -83,12 +83,12 @@
'..', '..',
], ],
'sources': [ 'sources': [
'update_client/test/test_configurator.cc', 'update_client/test_configurator.cc',
'update_client/test/test_configurator.h', 'update_client/test_configurator.h',
'update_client/test/test_installer.cc', 'update_client/test_installer.cc',
'update_client/test/test_installer.h', 'update_client/test_installer.h',
'update_client/test/url_request_post_interceptor.cc', 'update_client/url_request_post_interceptor.cc',
'update_client/test/url_request_post_interceptor.h', 'update_client/url_request_post_interceptor.h',
], ],
}, },
], ],
......
...@@ -65,12 +65,12 @@ source_set("update_client") { ...@@ -65,12 +65,12 @@ source_set("update_client") {
source_set("test_support") { source_set("test_support") {
testonly = true testonly = true
sources = [ sources = [
"test/test_configurator.cc", "test_configurator.cc",
"test/test_configurator.h", "test_configurator.h",
"test/test_installer.cc", "test_installer.cc",
"test/test_installer.h", "test_installer.h",
"test/url_request_post_interceptor.cc", "url_request_post_interceptor.cc",
"test/url_request_post_interceptor.h", "url_request_post_interceptor.h",
] ]
deps = [ deps = [
...@@ -86,13 +86,13 @@ source_set("test_support") { ...@@ -86,13 +86,13 @@ source_set("test_support") {
source_set("unit_tests") { source_set("unit_tests") {
testonly = true testonly = true
sources = [ sources = [
"test/component_patcher_unittest.cc", "component_patcher_unittest.cc",
"test/crx_downloader_unittest.cc", "crx_downloader_unittest.cc",
"test/ping_manager_unittest.cc", "ping_manager_unittest.cc",
"test/request_sender_unittest.cc", "request_sender_unittest.cc",
"test/update_checker_unittest.cc", "update_checker_unittest.cc",
"test/update_client_unittest.cc", "update_client_unittest.cc",
"test/update_response_unittest.cc", "update_response_unittest.cc",
] ]
deps = [ deps = [
......
...@@ -8,5 +8,13 @@ include_rules = [ ...@@ -8,5 +8,13 @@ include_rules = [
"+ui/base/win", "+ui/base/win",
"+third_party/libxml", "+third_party/libxml",
"+third_party/zlib", "+third_party/zlib",
"+testing",
] ]
# Tests can use things in content.
# TODO(sorin): refactor to eliminate the dependency on content by using
# message loops directly.
specific_include_rules = {
".*unittest\.cc": [
"+content",
]
}
\ No newline at end of file
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
#include "base/values.h" #include "base/values.h"
#include "components/update_client/component_patcher.h" #include "components/update_client/component_patcher.h"
#include "components/update_client/component_patcher_operation.h" #include "components/update_client/component_patcher_operation.h"
#include "components/update_client/test/component_patcher_unittest.h" #include "components/update_client/component_patcher_unittest.h"
#include "components/update_client/test/test_installer.h" #include "components/update_client/test_installer.h"
#include "courgette/courgette.h" #include "courgette/courgette.h"
#include "courgette/third_party/bsdiff.h" #include "courgette/third_party/bsdiff.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef COMPONENTS_UPDATE_CLIENT_TEST_COMPONENT_PATCHER_UNITTEST_H_ #ifndef COMPONENTS_UPDATE_CLIENT_COMPONENT_PATCHER_UNITTEST_H_
#define COMPONENTS_UPDATE_CLIENT_TEST_COMPONENT_PATCHER_UNITTEST_H_ #define COMPONENTS_UPDATE_CLIENT_COMPONENT_PATCHER_UNITTEST_H_
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h" #include "base/files/scoped_temp_dir.h"
...@@ -39,4 +39,4 @@ class ComponentPatcherOperationTest : public testing::Test { ...@@ -39,4 +39,4 @@ class ComponentPatcherOperationTest : public testing::Test {
} // namespace update_client } // namespace update_client
#endif // COMPONENTS_UPDATE_CLIENT_TEST_COMPONENT_PATCHER_UNITTEST_H_ #endif // COMPONENTS_UPDATE_CLIENT_COMPONENT_PATCHER_UNITTEST_H_
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#include "base/version.h" #include "base/version.h"
#include "components/update_client/crx_update_item.h" #include "components/update_client/crx_update_item.h"
#include "components/update_client/ping_manager.h" #include "components/update_client/ping_manager.h"
#include "components/update_client/test/test_configurator.h" #include "components/update_client/test_configurator.h"
#include "components/update_client/test/url_request_post_interceptor.h" #include "components/update_client/url_request_post_interceptor.h"
#include "net/url_request/url_request_test_util.h" #include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "components/update_client/request_sender.h" #include "components/update_client/request_sender.h"
#include "components/update_client/test/test_configurator.h" #include "components/update_client/test_configurator.h"
#include "components/update_client/test/url_request_post_interceptor.h" #include "components/update_client/url_request_post_interceptor.h"
#include "net/url_request/url_fetcher.h" #include "net/url_request/url_fetcher.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
......
include_rules = [
"+content",
"+courgette",
"+net",
]
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/update_client/test/test_configurator.h" #include "components/update_client/test_configurator.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/version.h" #include "base/version.h"
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef COMPONENTS_UPDATE_CLIENT_TEST_TEST_CONFIGURATOR_H_ #ifndef COMPONENTS_UPDATE_CLIENT_TEST_CONFIGURATOR_H_
#define COMPONENTS_UPDATE_CLIENT_TEST_TEST_CONFIGURATOR_H_ #define COMPONENTS_UPDATE_CLIENT_TEST_CONFIGURATOR_H_
#include <string> #include <string>
#include <utility> #include <utility>
...@@ -108,4 +108,4 @@ class TestConfigurator : public Configurator { ...@@ -108,4 +108,4 @@ class TestConfigurator : public Configurator {
} // namespace update_client } // namespace update_client
#endif // COMPONENTS_UPDATE_CLIENT_TEST_TEST_CONFIGURATOR_H_ #endif // COMPONENTS_UPDATE_CLIENT_TEST_CONFIGURATOR_H_
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/update_client/test/test_installer.h" #include "components/update_client/test_installer.h"
#include <string> #include <string>
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef COMPONENTS_UPDATE_CLIENT_TEST_TEST_INSTALLER_H_ #ifndef COMPONENTS_UPDATE_CLIENT_TEST_INSTALLER_H_
#define COMPONENTS_UPDATE_CLIENT_TEST_TEST_INSTALLER_H_ #define COMPONENTS_UPDATE_CLIENT_TEST_INSTALLER_H_
#include <string> #include <string>
...@@ -34,13 +34,9 @@ class TestInstaller : public CrxInstaller { ...@@ -34,13 +34,9 @@ class TestInstaller : public CrxInstaller {
bool Uninstall() override; bool Uninstall() override;
int error() const { int error() const { return error_; }
return error_;
}
int install_count() const { int install_count() const { return install_count_; }
return install_count_;
}
protected: protected:
~TestInstaller() override; ~TestInstaller() override;
...@@ -85,4 +81,4 @@ class VersionedTestInstaller : public TestInstaller { ...@@ -85,4 +81,4 @@ class VersionedTestInstaller : public TestInstaller {
} // namespace update_client } // namespace update_client
#endif // COMPONENTS_UPDATE_CLIENT_TEST_TEST_INSTALLER_H_ #endif // COMPONENTS_UPDATE_CLIENT_TEST_INSTALLER_H_
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/version.h" #include "base/version.h"
#include "components/update_client/crx_update_item.h" #include "components/update_client/crx_update_item.h"
#include "components/update_client/test/test_configurator.h" #include "components/update_client/test_configurator.h"
#include "components/update_client/test/url_request_post_interceptor.h"
#include "components/update_client/update_checker.h" #include "components/update_client/update_checker.h"
#include "components/update_client/url_request_post_interceptor.h"
#include "net/url_request/url_request_test_util.h" #include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h" #include "url/gurl.h"
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
#include "base/version.h" #include "base/version.h"
#include "components/update_client/crx_update_item.h" #include "components/update_client/crx_update_item.h"
#include "components/update_client/ping_manager.h" #include "components/update_client/ping_manager.h"
#include "components/update_client/test/test_configurator.h" #include "components/update_client/test_configurator.h"
#include "components/update_client/test/test_installer.h" #include "components/update_client/test_installer.h"
#include "components/update_client/update_checker.h" #include "components/update_client/update_checker.h"
#include "components/update_client/update_client_internal.h" #include "components/update_client/update_client_internal.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/update_client/test/url_request_post_interceptor.h" #include "components/update_client/url_request_post_interceptor.h"
#include "base/files/file_util.h" #include "base/files/file_util.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "components/update_client/test/test_configurator.h" #include "components/update_client/test_configurator.h"
#include "net/base/upload_bytes_element_reader.h" #include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_data_stream.h" #include "net/base/upload_data_stream.h"
#include "net/url_request/url_request.h" #include "net/url_request/url_request.h"
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef COMPONENTS_UPDATE_CLIENT_TEST_URL_REQUEST_POST_INTERCEPTOR_H_ #ifndef COMPONENTS_UPDATE_CLIENT_URL_REQUEST_POST_INTERCEPTOR_H_
#define COMPONENTS_UPDATE_CLIENT_TEST_URL_REQUEST_POST_INTERCEPTOR_H_ #define COMPONENTS_UPDATE_CLIENT_URL_REQUEST_POST_INTERCEPTOR_H_
#include <stdint.h> #include <stdint.h>
#include <map> #include <map>
...@@ -162,4 +162,4 @@ class PartialMatch : public URLRequestPostInterceptor::RequestMatcher { ...@@ -162,4 +162,4 @@ class PartialMatch : public URLRequestPostInterceptor::RequestMatcher {
} // namespace update_client } // namespace update_client
#endif // COMPONENTS_UPDATE_CLIENT_TEST_URL_REQUEST_POST_INTERCEPTOR_H_ #endif // COMPONENTS_UPDATE_CLIENT_URL_REQUEST_POST_INTERCEPTOR_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment