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

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

Issue 2395473002: reflow comments in modules/webdatabase (Closed)
Patch Set: Created 4 years, 2 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) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * Copyright (C) 2011 Google, Inc. All Rights Reserved. 3 * Copyright (C) 2011 Google, Inc. All Rights Reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 // ======================================== 43 // ========================================
44 // ... in other words, who's keeping the DatabaseContext alive and how long does 44 // ... in other words, who's keeping the DatabaseContext alive and how long does
45 // it need to stay alive? 45 // it need to stay alive?
46 // 46 //
47 // The DatabaseContext is referenced from: 47 // The DatabaseContext is referenced from:
48 // 1. DatabaseManager 48 // 1. DatabaseManager
49 // 2. Database 49 // 2. Database
50 // 50 //
51 // At Birth: 51 // At Birth:
52 // ======== 52 // ========
53 // We create a DatabaseContext only when there is a need i.e. the script tries t o 53 // We create a DatabaseContext only when there is a need i.e. the script tries
54 // open a Database via DatabaseManager::openDatabase(). 54 // to open a Database via DatabaseManager::openDatabase().
55 // 55 //
56 // The DatabaseContext constructor will register itself to DatabaseManager. This 56 // The DatabaseContext constructor will register itself to DatabaseManager. This
57 // lets DatabaseContext keep itself alive until it is unregisterd in 57 // lets DatabaseContext keep itself alive until it is unregisterd in
58 // contextDestroyed(). 58 // contextDestroyed().
59 // 59 //
60 // Once a DatabaseContext is associated with a ExecutionContext, it will 60 // Once a DatabaseContext is associated with a ExecutionContext, it will
61 // live until after the ExecutionContext destructs. This is true even if 61 // live until after the ExecutionContext destructs. This is true even if
62 // we don't succeed in opening any Databases for that context. When we do 62 // we don't succeed in opening any Databases for that context. When we do
63 // succeed in opening Databases for this ExecutionContext, the Database 63 // succeed in opening Databases for this ExecutionContext, the Database
64 // will re-use the same DatabaseContext. 64 // will re-use the same DatabaseContext.
65 // 65 //
66 // At Shutdown: 66 // At Shutdown:
67 // =========== 67 // ===========
68 // During shutdown, the DatabaseContext needs to: 68 // During shutdown, the DatabaseContext needs to:
69 // 1. "outlive" the ExecutionContext. 69 // 1. "outlive" the ExecutionContext.
70 // - This is needed because the DatabaseContext needs to remove itself from t he 70 // - This is needed because the DatabaseContext needs to remove itself from
71 // the
71 // ExecutionContext's ActiveDOMObject list and ContextLifecycleObserver 72 // ExecutionContext's ActiveDOMObject list and ContextLifecycleObserver
72 // list. This removal needs to be executed on the script's thread. Hence, w e 73 // list. This removal needs to be executed on the script's thread. Hence,
74 // we
73 // rely on the ExecutionContext's shutdown process to call 75 // rely on the ExecutionContext's shutdown process to call
74 // stop() and contextDestroyed() to give us a chance to clean these up from 76 // stop() and contextDestroyed() to give us a chance to clean these up from
75 // the script thread. 77 // the script thread.
76 // 78 //
77 // 2. "outlive" the Databases. 79 // 2. "outlive" the Databases.
78 // - This is because they may make use of the DatabaseContext to execute a cl ose 80 // - This is because they may make use of the DatabaseContext to execute a
79 // task and shutdown in an orderly manner. When the Databases are destructe d, 81 // close task and shutdown in an orderly manner. When the Databases are
80 // they will release the DatabaseContext reference from the DatabaseThread. 82 // destructed, they will release the DatabaseContext reference from the
83 // DatabaseThread.
81 // 84 //
82 // During shutdown, the ExecutionContext is shutting down on the script thread 85 // During shutdown, the ExecutionContext is shutting down on the script thread
83 // while the Databases are shutting down on the DatabaseThread. Hence, there can be 86 // while the Databases are shutting down on the DatabaseThread. Hence, there can
84 // a race condition as to whether the ExecutionContext or the Databases 87 // be a race condition as to whether the ExecutionContext or the Databases
85 // destruct first. 88 // destruct first.
86 // 89 //
87 // The Members in the Databases and DatabaseManager will ensure that the 90 // The Members in the Databases and DatabaseManager will ensure that the
88 // DatabaseContext will outlive Database and ExecutionContext regardless of 91 // DatabaseContext will outlive Database and ExecutionContext regardless of
89 // which of the 2 destructs first. 92 // which of the 2 destructs first.
90 93
91 DatabaseContext* DatabaseContext::create(ExecutionContext* context) { 94 DatabaseContext* DatabaseContext::create(ExecutionContext* context) {
92 DatabaseContext* self = new DatabaseContext(context); 95 DatabaseContext* self = new DatabaseContext(context);
93 DatabaseManager::manager().registerDatabaseContext(self); 96 DatabaseManager::manager().registerDatabaseContext(self);
94 return self; 97 return self;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } 145 }
143 146
144 DatabaseThread* DatabaseContext::databaseThread() { 147 DatabaseThread* DatabaseContext::databaseThread() {
145 if (!m_databaseThread && !m_hasOpenDatabases) { 148 if (!m_databaseThread && !m_hasOpenDatabases) {
146 // It's OK to ask for the m_databaseThread after we've requested 149 // It's OK to ask for the m_databaseThread after we've requested
147 // termination because we're still using it to execute the closing 150 // termination because we're still using it to execute the closing
148 // of the database. However, it is NOT OK to create a new thread 151 // of the database. However, it is NOT OK to create a new thread
149 // after we've requested termination. 152 // after we've requested termination.
150 ASSERT(!m_hasRequestedTermination); 153 ASSERT(!m_hasRequestedTermination);
151 154
152 // Create the database thread on first request - but not if at least one dat abase was already opened, 155 // Create the database thread on first request - but not if at least one
153 // because in that case we already had a database thread and terminated it a nd should not create another. 156 // database was already opened, because in that case we already had a
157 // database thread and terminated it and should not create another.
154 m_databaseThread = DatabaseThread::create(); 158 m_databaseThread = DatabaseThread::create();
155 m_databaseThread->start(); 159 m_databaseThread->start();
156 } 160 }
157 161
158 return m_databaseThread.get(); 162 return m_databaseThread.get();
159 } 163 }
160 164
161 bool DatabaseContext::databaseThreadAvailable() { 165 bool DatabaseContext::databaseThreadAvailable() {
162 return databaseThread() && !m_hasRequestedTermination; 166 return databaseThread() && !m_hasRequestedTermination;
163 } 167 }
(...skipping 22 matching lines...) Expand all
186 190
187 SecurityOrigin* DatabaseContext::getSecurityOrigin() const { 191 SecurityOrigin* DatabaseContext::getSecurityOrigin() const {
188 return getExecutionContext()->getSecurityOrigin(); 192 return getExecutionContext()->getSecurityOrigin();
189 } 193 }
190 194
191 bool DatabaseContext::isContextThread() const { 195 bool DatabaseContext::isContextThread() const {
192 return getExecutionContext()->isContextThread(); 196 return getExecutionContext()->isContextThread();
193 } 197 }
194 198
195 } // namespace blink 199 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698