OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/app_data_migrator.h" | 5 #include "chrome/browser/extensions/app_data_migrator.h" |
6 | 6 |
7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
8 #include "base/memory/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "content/public/browser/browser_context.h" | 10 #include "content/public/browser/browser_context.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 | 90 |
91 FileSystemContext* old_fs_context = old_partition->GetFileSystemContext(); | 91 FileSystemContext* old_fs_context = old_partition->GetFileSystemContext(); |
92 FileSystemContext* fs_context = current_partition->GetFileSystemContext(); | 92 FileSystemContext* fs_context = current_partition->GetFileSystemContext(); |
93 | 93 |
94 // Perform the file system migration on the old file system's | 94 // Perform the file system migration on the old file system's |
95 // sequenced task runner. This is to ensure it queues after any | 95 // sequenced task runner. This is to ensure it queues after any |
96 // in-flight file system operations. After it completes, it should | 96 // in-flight file system operations. After it completes, it should |
97 // invoke the original callback passed into DoMigrationAndReply. | 97 // invoke the original callback passed into DoMigrationAndReply. |
98 old_fs_context->default_file_task_runner()->PostTaskAndReply( | 98 old_fs_context->default_file_task_runner()->PostTaskAndReply( |
99 FROM_HERE, | 99 FROM_HERE, |
100 base::Bind(&MigrateOnFileSystemThread, make_scoped_refptr(old_fs_context), | 100 base::Bind(&MigrateOnFileSystemThread, base::RetainedRef(old_fs_context), |
101 make_scoped_refptr(fs_context), make_scoped_refptr(extension)), | 101 base::RetainedRef(fs_context), base::RetainedRef(extension)), |
102 reply); | 102 reply); |
103 } | 103 } |
104 | 104 |
105 void MigrateLegacyPartition(WeakPtr<extensions::AppDataMigrator> migrator, | 105 void MigrateLegacyPartition(WeakPtr<extensions::AppDataMigrator> migrator, |
106 StoragePartition* old_partition, | 106 StoragePartition* old_partition, |
107 StoragePartition* current_partition, | 107 StoragePartition* current_partition, |
108 const extensions::Extension* extension, | 108 const extensions::Extension* extension, |
109 const base::Closure& reply) { | 109 const base::Closure& reply) { |
110 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 110 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
111 | 111 |
112 IndexedDBContext* indexed_db_context = | 112 IndexedDBContext* indexed_db_context = |
113 current_partition->GetIndexedDBContext(); | 113 current_partition->GetIndexedDBContext(); |
114 IndexedDBContext* old_indexed_db_context = | 114 IndexedDBContext* old_indexed_db_context = |
115 old_partition->GetIndexedDBContext(); | 115 old_partition->GetIndexedDBContext(); |
116 | 116 |
117 // Create a closure for the file system migration. This is the next step in | 117 // Create a closure for the file system migration. This is the next step in |
118 // the migration flow after the IndexedDB migration. | 118 // the migration flow after the IndexedDB migration. |
119 base::Closure migrate_fs = | 119 base::Closure migrate_fs = |
120 base::Bind(&MigrateFileSystem, migrator, old_partition, current_partition, | 120 base::Bind(&MigrateFileSystem, migrator, old_partition, current_partition, |
121 make_scoped_refptr(extension), reply); | 121 base::RetainedRef(extension), reply); |
122 | 122 |
123 // Perform the IndexedDB migration on the old context's sequenced task | 123 // Perform the IndexedDB migration on the old context's sequenced task |
124 // runner. After completion, it should call MigrateFileSystem. | 124 // runner. After completion, it should call MigrateFileSystem. |
125 old_indexed_db_context->TaskRunner()->PostTaskAndReply( | 125 old_indexed_db_context->TaskRunner()->PostTaskAndReply( |
126 FROM_HERE, base::Bind(&MigrateOnIndexedDBThread, | 126 FROM_HERE, |
127 make_scoped_refptr(old_indexed_db_context), | 127 base::Bind( |
128 make_scoped_refptr(indexed_db_context), | 128 &MigrateOnIndexedDBThread, base::RetainedRef(old_indexed_db_context), |
129 make_scoped_refptr(extension)), | 129 base::RetainedRef(indexed_db_context), base::RetainedRef(extension)), |
130 migrate_fs); | 130 migrate_fs); |
131 } | 131 } |
132 | 132 |
133 } // namespace | 133 } // namespace |
134 | 134 |
135 namespace extensions { | 135 namespace extensions { |
136 | 136 |
137 AppDataMigrator::AppDataMigrator(Profile* profile, ExtensionRegistry* registry) | 137 AppDataMigrator::AppDataMigrator(Profile* profile, ExtensionRegistry* registry) |
138 : profile_(profile), registry_(registry), weak_factory_(this) { | 138 : profile_(profile), registry_(registry), weak_factory_(this) { |
139 } | 139 } |
(...skipping 29 matching lines...) Expand all Loading... |
169 if (old_was_disabled) | 169 if (old_was_disabled) |
170 registry_->RemoveEnabled(extension->id()); | 170 registry_->RemoveEnabled(extension->id()); |
171 else | 171 else |
172 registry_->AddEnabled(old); | 172 registry_->AddEnabled(old); |
173 | 173 |
174 MigrateLegacyPartition(weak_factory_.GetWeakPtr(), old_partition, | 174 MigrateLegacyPartition(weak_factory_.GetWeakPtr(), old_partition, |
175 new_partition, extension, reply); | 175 new_partition, extension, reply); |
176 } | 176 } |
177 | 177 |
178 } // namespace extensions | 178 } // namespace extensions |
OLD | NEW |