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

Side by Side Diff: chrome/browser/ui/extensions/extension_enable_flow.cc

Issue 317433003: Remove NOTIFICATION_EXTENSION_UNINSTALLED from extension_enable_flow.* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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
« no previous file with comments | « chrome/browser/ui/extensions/extension_enable_flow.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/extensions/extension_enable_flow.h" 5 #include "chrome/browser/ui/extensions/extension_enable_flow.h"
6 6
7 #include "chrome/browser/chrome_notification_types.h" 7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/extensions/extension_service.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 prompt_.reset(parent_contents_ ? 109 prompt_.reset(parent_contents_ ?
110 new ExtensionInstallPrompt(parent_contents_) : 110 new ExtensionInstallPrompt(parent_contents_) :
111 new ExtensionInstallPrompt(profile_, parent_window_, this)); 111 new ExtensionInstallPrompt(profile_, parent_window_, this));
112 } 112 }
113 113
114 void ExtensionEnableFlow::StartObserving() { 114 void ExtensionEnableFlow::StartObserving() {
115 extension_registry_observer_.Add( 115 extension_registry_observer_.Add(
116 extensions::ExtensionRegistry::Get(profile_)); 116 extensions::ExtensionRegistry::Get(profile_));
117 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOAD_ERROR, 117 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOAD_ERROR,
118 content::Source<Profile>(profile_)); 118 content::Source<Profile>(profile_));
119 registrar_.Add(this,
120 chrome::NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED,
121 content::Source<Profile>(profile_));
122 } 119 }
123 120
124 void ExtensionEnableFlow::StopObserving() { 121 void ExtensionEnableFlow::StopObserving() {
125 registrar_.RemoveAll(); 122 registrar_.RemoveAll();
123 extension_registry_observer_.RemoveAll();
limasdf 2014/06/03 19:27:43 I think this is necessary. and it should be addres
126 } 124 }
127 125
128 void ExtensionEnableFlow::Observe(int type, 126 void ExtensionEnableFlow::Observe(int type,
129 const content::NotificationSource& source, 127 const content::NotificationSource& source,
130 const content::NotificationDetails& details) { 128 const content::NotificationDetails& details) {
131 switch (type) { 129 DCHECK_EQ(chrome::NOTIFICATION_EXTENSION_LOAD_ERROR, type);
132 case chrome::NOTIFICATION_EXTENSION_LOAD_ERROR: { 130 StopObserving();
133 StopObserving(); 131 delegate_->ExtensionEnableFlowAborted(false);
134 delegate_->ExtensionEnableFlowAborted(false);
135 break;
136 }
137 case chrome::NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED: {
138 const Extension* extension =
139 content::Details<const Extension>(details).ptr();
140 if (extension->id() == extension_id_) {
141 StopObserving();
142 delegate_->ExtensionEnableFlowAborted(false);
143 }
144 break;
145 }
146 default:
147 NOTREACHED();
148 }
149 } 132 }
150 133
151 void ExtensionEnableFlow::OnExtensionLoaded( 134 void ExtensionEnableFlow::OnExtensionLoaded(
152 content::BrowserContext* browser_context, 135 content::BrowserContext* browser_context,
153 const Extension* extension) { 136 const Extension* extension) {
154 if (extension->id() == extension_id_) { 137 if (extension->id() == extension_id_) {
155 StopObserving(); 138 StopObserving();
156 CheckPermissionAndMaybePromptUser(); 139 CheckPermissionAndMaybePromptUser();
157 } 140 }
158 } 141 }
159 142
143 void ExtensionEnableFlow::OnExtensionUninstalled(
144 content::BrowserContext* browser_context,
145 const Extension* extension) {
146 if (extension->id() == extension_id_) {
147 StopObserving();
148 delegate_->ExtensionEnableFlowAborted(false);
149 }
150 }
151
160 void ExtensionEnableFlow::InstallUIProceed() { 152 void ExtensionEnableFlow::InstallUIProceed() {
161 ExtensionService* service = 153 ExtensionService* service =
162 extensions::ExtensionSystem::Get(profile_)->extension_service(); 154 extensions::ExtensionSystem::Get(profile_)->extension_service();
163 155
164 // The extension can be uninstalled in another window while the UI was 156 // The extension can be uninstalled in another window while the UI was
165 // showing. Treat it as a cancellation and notify |delegate_|. 157 // showing. Treat it as a cancellation and notify |delegate_|.
166 const Extension* extension = service->GetExtensionById(extension_id_, true); 158 const Extension* extension = service->GetExtensionById(extension_id_, true);
167 if (!extension) { 159 if (!extension) {
168 delegate_->ExtensionEnableFlowAborted(true); 160 delegate_->ExtensionEnableFlowAborted(true);
169 return; 161 return;
170 } 162 }
171 163
172 service->GrantPermissionsAndEnableExtension(extension); 164 service->GrantPermissionsAndEnableExtension(extension);
173 delegate_->ExtensionEnableFlowFinished(); // |delegate_| may delete us. 165 delegate_->ExtensionEnableFlowFinished(); // |delegate_| may delete us.
174 } 166 }
175 167
176 void ExtensionEnableFlow::InstallUIAbort(bool user_initiated) { 168 void ExtensionEnableFlow::InstallUIAbort(bool user_initiated) {
177 delegate_->ExtensionEnableFlowAborted(user_initiated); 169 delegate_->ExtensionEnableFlowAborted(user_initiated);
178 // |delegate_| may delete us. 170 // |delegate_| may delete us.
179 } 171 }
180 172
181 content::WebContents* ExtensionEnableFlow::OpenURL( 173 content::WebContents* ExtensionEnableFlow::OpenURL(
182 const content::OpenURLParams& params) { 174 const content::OpenURLParams& params) {
183 chrome::ScopedTabbedBrowserDisplayer displayer( 175 chrome::ScopedTabbedBrowserDisplayer displayer(
184 profile_, chrome::GetActiveDesktop()); 176 profile_, chrome::GetActiveDesktop());
185 return displayer.browser()->OpenURL(params); 177 return displayer.browser()->OpenURL(params);
186 } 178 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/extensions/extension_enable_flow.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698