Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3265)

Unified Diff: chrome/browser/ui/global_error/global_error_service_unittest.cc

Issue 2409443002: Make GlobalErrorService's ownership model slightly less insane. (Closed)
Patch Set: commentary Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/global_error/global_error_service_unittest.cc
diff --git a/chrome/browser/ui/global_error/global_error_service_unittest.cc b/chrome/browser/ui/global_error/global_error_service_unittest.cc
index 930fcbf3561e81a635902446be451d1a8e0d6c3d..00eb7f27d44824ca763202f10bcba487385a24dd 100644
--- a/chrome/browser/ui/global_error/global_error_service_unittest.cc
+++ b/chrome/browser/ui/global_error/global_error_service_unittest.cc
@@ -8,6 +8,7 @@
#include "base/logging.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "chrome/browser/ui/global_error/global_error.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -76,12 +77,12 @@ TEST(GlobalErrorServiceTest, AddError) {
EXPECT_EQ(0u, service->errors().size());
BaseError* error1 = new BaseError;
- service->AddGlobalError(error1);
+ service->AddGlobalError(base::WrapUnique(error1));
EXPECT_EQ(1u, service->errors().size());
EXPECT_EQ(error1, service->errors()[0]);
BaseError* error2 = new BaseError;
- service->AddGlobalError(error2);
+ service->AddGlobalError(base::WrapUnique(error2));
EXPECT_EQ(2u, service->errors().size());
EXPECT_EQ(error1, service->errors()[0]);
EXPECT_EQ(error2, service->errors()[1]);
@@ -96,18 +97,22 @@ TEST(GlobalErrorServiceTest, AddError) {
TEST(GlobalErrorServiceTest, RemoveError) {
std::unique_ptr<GlobalErrorService> service(new GlobalErrorService(NULL));
BaseError error1;
- service->AddGlobalError(&error1);
+ service->AddUnownedGlobalError(&error1);
BaseError error2;
- service->AddGlobalError(&error2);
+ service->AddUnownedGlobalError(&error2);
EXPECT_EQ(2u, service->errors().size());
- service->RemoveGlobalError(&error1);
+ service->RemoveUnownedGlobalError(&error1);
EXPECT_EQ(1u, service->errors().size());
EXPECT_EQ(&error2, service->errors()[0]);
- service->RemoveGlobalError(&error2);
+ service->RemoveUnownedGlobalError(&error2);
EXPECT_EQ(0u, service->errors().size());
// Ensure that deleting the service does not delete the error objects.
+ //
+ // NB: If the service _does_ delete the error objects, then it called the
+ // delete operator on a stack-allocated object, which is undefined behavior,
+ // which we can't really use to prove anything. :(
EXPECT_EQ(2, BaseError::count());
service.reset();
EXPECT_EQ(2, BaseError::count());
@@ -120,16 +125,16 @@ TEST(GlobalErrorServiceTest, GetMenuItem) {
MenuError* error3 = new MenuError(3, GlobalError::SEVERITY_HIGH);
GlobalErrorService service(NULL);
- service.AddGlobalError(error1);
- service.AddGlobalError(error2);
- service.AddGlobalError(error3);
+ service.AddGlobalError(base::WrapUnique(error1));
+ service.AddGlobalError(base::WrapUnique(error2));
+ service.AddGlobalError(base::WrapUnique(error3));
EXPECT_EQ(error2, service.GetGlobalErrorByMenuItemCommandID(2));
EXPECT_EQ(error3, service.GetGlobalErrorByMenuItemCommandID(3));
EXPECT_EQ(NULL, service.GetGlobalErrorByMenuItemCommandID(4));
}
-// Test getting the error with the higest severity.
+// Test getting the error with the highest severity.
TEST(GlobalErrorServiceTest, HighestSeverity) {
MenuError* error1 = new MenuError(1, GlobalError::SEVERITY_LOW);
MenuError* error2 = new MenuError(2, GlobalError::SEVERITY_MEDIUM);
@@ -138,18 +143,17 @@ TEST(GlobalErrorServiceTest, HighestSeverity) {
GlobalErrorService service(NULL);
EXPECT_EQ(NULL, service.GetHighestSeverityGlobalErrorWithAppMenuItem());
- service.AddGlobalError(error1);
+ service.AddGlobalError(base::WrapUnique(error1));
EXPECT_EQ(error1, service.GetHighestSeverityGlobalErrorWithAppMenuItem());
- service.AddGlobalError(error2);
+ service.AddGlobalError(base::WrapUnique(error2));
EXPECT_EQ(error2, service.GetHighestSeverityGlobalErrorWithAppMenuItem());
- service.AddGlobalError(error3);
+ service.AddGlobalError(base::WrapUnique(error3));
EXPECT_EQ(error3, service.GetHighestSeverityGlobalErrorWithAppMenuItem());
// Remove the highest-severity error.
service.RemoveGlobalError(error3);
- delete error3;
// Now error2 should be the next highest severity error.
EXPECT_EQ(error2, service.GetHighestSeverityGlobalErrorWithAppMenuItem());

Powered by Google App Engine
This is Rietveld 408576698