1515#include " content/public/test/browser_task_environment.h"
1616#include " testing/gtest/include/gtest/gtest.h"
1717
18- namespace settings {
19-
2018class BraveImporterObserverUnitTest : public testing ::Test {
2119 public:
2220 BraveImporterObserverUnitTest () {}
@@ -33,6 +31,7 @@ class BraveImporterObserverUnitTest : public testing::Test {
3331 content::BrowserTaskEnvironment task_environment_;
3432 base::Value expected_info_;
3533 int expected_calls_ = 0 ;
34+ raw_ptr<BraveExternalProcessImporterHost> _ = nullptr ;
3635};
3736
3837TEST_F (BraveImporterObserverUnitTest, ImportEvents) {
@@ -42,8 +41,8 @@ TEST_F(BraveImporterObserverUnitTest, ImportEvents) {
4241 source_profile.importer_type = importer::TYPE_CHROME;
4342 source_profile.source_path = base::FilePath (FILE_PATH_LITERAL (" test" ));
4443 auto imported_items = importer::AUTOFILL_FORM_DATA | importer::PASSWORDS;
45- std::unique_ptr<settings:: BraveImporterObserver> observer =
46- std::make_unique<settings:: BraveImporterObserver>(
44+ std::unique_ptr<BraveImporterObserver> observer =
45+ std::make_unique<BraveImporterObserver>(
4746 importer_host, source_profile, imported_items,
4847 base::BindRepeating (
4948 &BraveImporterObserverUnitTest::NotifyImportProgress,
@@ -104,14 +103,40 @@ TEST_F(BraveImporterObserverUnitTest, ImportEvents) {
104103
105104 observer->ImportEnded ();
106105 EXPECT_EQ (GetExpectedCalls (), 1 );
106+ EXPECT_EQ (observer->GetImporterHostForTesting (), nullptr );
107107 // The observer should be removed on ImportEnded event.
108108 EXPECT_EQ (importer_host->GetObserverForTesting (), nullptr );
109- // Checking the observer will be removed on destruction.
109+
110+ // ImportEnded event should not be called anymore.
111+ SetExpectedCalls (0 );
112+ EXPECT_EQ (GetExpectedCalls (), 0 );
113+ // Destroy host.
114+ importer_host->NotifyImportEndedForTesting ();
115+ EXPECT_EQ (GetExpectedCalls (), 0 );
116+ }
117+
118+ TEST_F (BraveImporterObserverUnitTest, DestroyObserverEarly) {
119+ auto * importer_host = new BraveExternalProcessImporterHost ();
120+ importer::SourceProfile source_profile;
121+ source_profile.importer_name = u" importer_name" ;
122+ source_profile.importer_type = importer::TYPE_CHROME;
123+ source_profile.source_path = base::FilePath (FILE_PATH_LITERAL (" test" ));
124+ auto imported_items = importer::AUTOFILL_FORM_DATA | importer::PASSWORDS;
125+ std::unique_ptr<BraveImporterObserver> observer =
126+ std::make_unique<BraveImporterObserver>(
127+ importer_host, source_profile, imported_items,
128+ base::BindRepeating (
129+ &BraveImporterObserverUnitTest::NotifyImportProgress,
130+ base::Unretained (this )));
110131 importer_host->set_observer (observer.get ());
132+ EXPECT_EQ (importer_host->GetObserverForTesting (), observer.get ());
133+ EXPECT_EQ (GetExpectedCalls (), 0 );
111134 observer.reset ();
112135 EXPECT_EQ (importer_host->GetObserverForTesting (), nullptr );
136+ // ImportEnded event should not be called anymore.
137+ SetExpectedCalls (0 );
138+ EXPECT_EQ (GetExpectedCalls (), 0 );
113139 // Destroy host.
114140 importer_host->NotifyImportEndedForTesting ();
141+ EXPECT_EQ (GetExpectedCalls (), 0 );
115142}
116-
117- } // namespace settings
0 commit comments