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

Side by Side Diff: third_party/WebKit/Source/modules/webdatabase/DatabaseManager.cpp

Issue 2813433002: Replace ASSERT, ASSERT_NOT_REACHED, and RELEASE_ASSERT in modules/webdatabase (Closed)
Patch Set: rebase and assert -> dcheck Created 3 years, 8 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 62
63 // This is just for ignoring DatabaseCallback::handleEvent()'s return value. 63 // This is just for ignoring DatabaseCallback::handleEvent()'s return value.
64 static void DatabaseCallbackHandleEvent(DatabaseCallback* callback, 64 static void DatabaseCallbackHandleEvent(DatabaseCallback* callback,
65 Database* database) { 65 Database* database) {
66 probe::AsyncTask async_task(database->GetExecutionContext(), callback); 66 probe::AsyncTask async_task(database->GetExecutionContext(), callback);
67 callback->handleEvent(database); 67 callback->handleEvent(database);
68 } 68 }
69 69
70 DatabaseContext* DatabaseManager::ExistingDatabaseContextFor( 70 DatabaseContext* DatabaseManager::ExistingDatabaseContextFor(
71 ExecutionContext* context) { 71 ExecutionContext* context) {
72 ASSERT(database_context_registered_count_ >= 0); 72 DCHECK_GE(database_context_registered_count_, 0);
73 ASSERT(database_context_instance_count_ >= 0); 73 DCHECK_GE(database_context_instance_count_, 0);
74 ASSERT(database_context_registered_count_ <= 74 DCHECK_LE(database_context_registered_count_,
75 database_context_instance_count_); 75 database_context_instance_count_);
76 return context_map_.at(context); 76 return context_map_.at(context);
77 } 77 }
78 78
79 DatabaseContext* DatabaseManager::DatabaseContextFor( 79 DatabaseContext* DatabaseManager::DatabaseContextFor(
80 ExecutionContext* context) { 80 ExecutionContext* context) {
81 if (DatabaseContext* database_context = ExistingDatabaseContextFor(context)) 81 if (DatabaseContext* database_context = ExistingDatabaseContextFor(context))
82 return database_context; 82 return database_context;
83 return DatabaseContext::Create(context); 83 return DatabaseContext::Create(context);
84 } 84 }
85 85
86 void DatabaseManager::RegisterDatabaseContext( 86 void DatabaseManager::RegisterDatabaseContext(
87 DatabaseContext* database_context) { 87 DatabaseContext* database_context) {
88 ExecutionContext* context = database_context->GetExecutionContext(); 88 ExecutionContext* context = database_context->GetExecutionContext();
89 context_map_.Set(context, database_context); 89 context_map_.Set(context, database_context);
90 #if DCHECK_IS_ON() 90 #if DCHECK_IS_ON()
91 database_context_registered_count_++; 91 database_context_registered_count_++;
92 #endif 92 #endif
93 } 93 }
94 94
95 void DatabaseManager::UnregisterDatabaseContext( 95 void DatabaseManager::UnregisterDatabaseContext(
96 DatabaseContext* database_context) { 96 DatabaseContext* database_context) {
97 ExecutionContext* context = database_context->GetExecutionContext(); 97 ExecutionContext* context = database_context->GetExecutionContext();
98 ASSERT(context_map_.at(context)); 98 DCHECK(context_map_.at(context));
99 #if DCHECK_IS_ON() 99 #if DCHECK_IS_ON()
100 database_context_registered_count_--; 100 database_context_registered_count_--;
101 #endif 101 #endif
102 context_map_.erase(context); 102 context_map_.erase(context);
103 } 103 }
104 104
105 #if DCHECK_IS_ON() 105 #if DCHECK_IS_ON()
106 void DatabaseManager::DidConstructDatabaseContext() { 106 void DatabaseManager::DidConstructDatabaseContext() {
107 database_context_instance_count_++; 107 database_context_instance_count_++;
108 } 108 }
109 109
110 void DatabaseManager::DidDestructDatabaseContext() { 110 void DatabaseManager::DidDestructDatabaseContext() {
111 database_context_instance_count_--; 111 database_context_instance_count_--;
112 ASSERT(database_context_registered_count_ <= 112 DCHECK_LE(database_context_registered_count_,
113 database_context_instance_count_); 113 database_context_instance_count_);
114 } 114 }
115 #endif 115 #endif
116 116
117 void DatabaseManager::ThrowExceptionForDatabaseError( 117 void DatabaseManager::ThrowExceptionForDatabaseError(
118 DatabaseError error, 118 DatabaseError error,
119 const String& error_message, 119 const String& error_message,
120 ExceptionState& exception_state) { 120 ExceptionState& exception_state) {
121 switch (error) { 121 switch (error) {
122 case DatabaseError::kNone: 122 case DatabaseError::kNone:
123 return; 123 return;
124 case DatabaseError::kGenericSecurityError: 124 case DatabaseError::kGenericSecurityError:
125 exception_state.ThrowSecurityError(error_message); 125 exception_state.ThrowSecurityError(error_message);
126 return; 126 return;
127 case DatabaseError::kInvalidDatabaseState: 127 case DatabaseError::kInvalidDatabaseState:
128 exception_state.ThrowDOMException(kInvalidStateError, error_message); 128 exception_state.ThrowDOMException(kInvalidStateError, error_message);
129 return; 129 return;
130 default: 130 default:
131 ASSERT_NOT_REACHED(); 131 NOTREACHED();
132 } 132 }
133 } 133 }
134 134
135 static void LogOpenDatabaseError(ExecutionContext* context, 135 static void LogOpenDatabaseError(ExecutionContext* context,
136 const String& name) { 136 const String& name) {
137 STORAGE_DVLOG(1) << "Database " << name << " for origin " 137 STORAGE_DVLOG(1) << "Database " << name << " for origin "
138 << context->GetSecurityOrigin()->ToString() 138 << context->GetSecurityOrigin()->ToString()
139 << " not allowed to be established"; 139 << " not allowed to be established";
140 } 140 }
141 141
142 Database* DatabaseManager::OpenDatabaseInternal( 142 Database* DatabaseManager::OpenDatabaseInternal(
143 ExecutionContext* context, 143 ExecutionContext* context,
144 const String& name, 144 const String& name,
145 const String& expected_version, 145 const String& expected_version,
146 const String& display_name, 146 const String& display_name,
147 unsigned estimated_size, 147 unsigned estimated_size,
148 bool set_version_in_new_database, 148 bool set_version_in_new_database,
149 DatabaseError& error, 149 DatabaseError& error,
150 String& error_message) { 150 String& error_message) {
151 ASSERT(error == DatabaseError::kNone); 151 DCHECK_EQ(error, DatabaseError::kNone);
152 152
153 DatabaseContext* backend_context = DatabaseContextFor(context)->Backend(); 153 DatabaseContext* backend_context = DatabaseContextFor(context)->Backend();
154 if (DatabaseTracker::Tracker().CanEstablishDatabase( 154 if (DatabaseTracker::Tracker().CanEstablishDatabase(
155 backend_context, name, display_name, estimated_size, error)) { 155 backend_context, name, display_name, estimated_size, error)) {
156 Database* backend = new Database(backend_context, name, expected_version, 156 Database* backend = new Database(backend_context, name, expected_version,
157 display_name, estimated_size); 157 display_name, estimated_size);
158 if (backend->OpenAndVerifyVersion(set_version_in_new_database, error, 158 if (backend->OpenAndVerifyVersion(set_version_in_new_database, error,
159 error_message)) 159 error_message))
160 return backend; 160 return backend;
161 } 161 }
162 162
163 ASSERT(error != DatabaseError::kNone); 163 DCHECK_NE(error, DatabaseError::kNone);
164 switch (error) { 164 switch (error) {
165 case DatabaseError::kGenericSecurityError: 165 case DatabaseError::kGenericSecurityError:
166 LogOpenDatabaseError(context, name); 166 LogOpenDatabaseError(context, name);
167 return nullptr; 167 return nullptr;
168 168
169 case DatabaseError::kInvalidDatabaseState: 169 case DatabaseError::kInvalidDatabaseState:
170 LogErrorMessage(context, error_message); 170 LogErrorMessage(context, error_message);
171 return nullptr; 171 return nullptr;
172 172
173 default: 173 default:
174 ASSERT_NOT_REACHED(); 174 NOTREACHED();
175 } 175 }
176 return nullptr; 176 return nullptr;
177 } 177 }
178 178
179 Database* DatabaseManager::OpenDatabase(ExecutionContext* context, 179 Database* DatabaseManager::OpenDatabase(ExecutionContext* context,
180 const String& name, 180 const String& name,
181 const String& expected_version, 181 const String& expected_version,
182 const String& display_name, 182 const String& display_name,
183 unsigned estimated_size, 183 unsigned estimated_size,
184 DatabaseCallback* creation_callback, 184 DatabaseCallback* creation_callback,
185 DatabaseError& error, 185 DatabaseError& error,
186 String& error_message) { 186 String& error_message) {
187 ASSERT(error == DatabaseError::kNone); 187 DCHECK_EQ(error, DatabaseError::kNone);
188 188
189 bool set_version_in_new_database = !creation_callback; 189 bool set_version_in_new_database = !creation_callback;
190 Database* database = OpenDatabaseInternal( 190 Database* database = OpenDatabaseInternal(
191 context, name, expected_version, display_name, estimated_size, 191 context, name, expected_version, display_name, estimated_size,
192 set_version_in_new_database, error, error_message); 192 set_version_in_new_database, error, error_message);
193 if (!database) 193 if (!database)
194 return nullptr; 194 return nullptr;
195 195
196 DatabaseContextFor(context)->SetHasOpenDatabases(); 196 DatabaseContextFor(context)->SetHasOpenDatabases();
197 DatabaseClient::From(context)->DidOpenDatabase( 197 DatabaseClient::From(context)->DidOpenDatabase(
198 database, context->GetSecurityOrigin()->Host(), name, expected_version); 198 database, context->GetSecurityOrigin()->Host(), name, expected_version);
199 199
200 if (database->IsNew() && creation_callback) { 200 if (database->IsNew() && creation_callback) {
201 STORAGE_DVLOG(1) << "Scheduling DatabaseCreationCallbackTask for database " 201 STORAGE_DVLOG(1) << "Scheduling DatabaseCreationCallbackTask for database "
202 << database; 202 << database;
203 probe::AsyncTaskScheduled(database->GetExecutionContext(), "openDatabase", 203 probe::AsyncTaskScheduled(database->GetExecutionContext(), "openDatabase",
204 creation_callback); 204 creation_callback);
205 TaskRunnerHelper::Get(TaskType::kDatabaseAccess, 205 TaskRunnerHelper::Get(TaskType::kDatabaseAccess,
206 database->GetExecutionContext()) 206 database->GetExecutionContext())
207 ->PostTask(BLINK_FROM_HERE, WTF::Bind(&DatabaseCallbackHandleEvent, 207 ->PostTask(BLINK_FROM_HERE, WTF::Bind(&DatabaseCallbackHandleEvent,
208 WrapPersistent(creation_callback), 208 WrapPersistent(creation_callback),
209 WrapPersistent(database))); 209 WrapPersistent(database)));
210 } 210 }
211 211
212 ASSERT(database); 212 DCHECK(database);
213 return database; 213 return database;
214 } 214 }
215 215
216 String DatabaseManager::FullPathForDatabase(SecurityOrigin* origin, 216 String DatabaseManager::FullPathForDatabase(SecurityOrigin* origin,
217 const String& name, 217 const String& name,
218 bool create_if_does_not_exist) { 218 bool create_if_does_not_exist) {
219 return DatabaseTracker::Tracker().FullPathForDatabase( 219 return DatabaseTracker::Tracker().FullPathForDatabase(
220 origin, name, create_if_does_not_exist); 220 origin, name, create_if_does_not_exist);
221 } 221 }
222 222
223 void DatabaseManager::LogErrorMessage(ExecutionContext* context, 223 void DatabaseManager::LogErrorMessage(ExecutionContext* context,
224 const String& message) { 224 const String& message) {
225 context->AddConsoleMessage(ConsoleMessage::Create( 225 context->AddConsoleMessage(ConsoleMessage::Create(
226 kStorageMessageSource, kErrorMessageLevel, message)); 226 kStorageMessageSource, kErrorMessageLevel, message));
227 } 227 }
228 228
229 } // namespace blink 229 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698