| OLD | NEW |
| 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/extensions/bundle_installer.h" | 5 #include "chrome/browser/extensions/bundle_installer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 ShowPrompt(); | 254 ShowPrompt(); |
| 255 } | 255 } |
| 256 | 256 |
| 257 void BundleInstaller::ShowPrompt() { | 257 void BundleInstaller::ShowPrompt() { |
| 258 // Abort if we couldn't create any Extensions out of the manifests. | 258 // Abort if we couldn't create any Extensions out of the manifests. |
| 259 if (dummy_extensions_.empty()) { | 259 if (dummy_extensions_.empty()) { |
| 260 approval_callback_.Run(APPROVAL_ERROR); | 260 approval_callback_.Run(APPROVAL_ERROR); |
| 261 return; | 261 return; |
| 262 } | 262 } |
| 263 | 263 |
| 264 scoped_refptr<const PermissionSet> permissions = | 264 scoped_ptr<const PermissionSet> permissions; |
| 265 dummy_extensions_[0]->permissions_data()->active_permissions(); | 265 for (size_t i = 0; i < dummy_extensions_.size(); ++i) { |
| 266 for (size_t i = 1; i < dummy_extensions_.size(); ++i) { | |
| 267 permissions = PermissionSet::CreateUnion( | 266 permissions = PermissionSet::CreateUnion( |
| 268 *permissions, | 267 permissions ? *permissions : PermissionSet(), |
| 269 *dummy_extensions_[i]->permissions_data()->active_permissions()); | 268 *dummy_extensions_[i]->permissions_data()->active_permissions()); |
| 270 } | 269 } |
| 271 | 270 |
| 272 if (g_auto_approve_for_test == PROCEED) { | 271 if (g_auto_approve_for_test == PROCEED) { |
| 273 InstallUIProceed(); | 272 InstallUIProceed(); |
| 274 } else if (g_auto_approve_for_test == ABORT) { | 273 } else if (g_auto_approve_for_test == ABORT) { |
| 275 InstallUIAbort(true); | 274 InstallUIAbort(true); |
| 276 } else { | 275 } else { |
| 277 Browser* browser = browser_; | 276 Browser* browser = browser_; |
| 278 if (!browser) { | 277 if (!browser) { |
| 279 // The browser that we got initially could have gone away during our | 278 // The browser that we got initially could have gone away during our |
| 280 // thread hopping. | 279 // thread hopping. |
| 281 browser = chrome::FindLastActiveWithProfile(profile_, host_desktop_type_); | 280 browser = chrome::FindLastActiveWithProfile(profile_, host_desktop_type_); |
| 282 } | 281 } |
| 283 content::WebContents* web_contents = NULL; | 282 content::WebContents* web_contents = NULL; |
| 284 if (browser) | 283 if (browser) |
| 285 web_contents = browser->tab_strip_model()->GetActiveWebContents(); | 284 web_contents = browser->tab_strip_model()->GetActiveWebContents(); |
| 286 install_ui_.reset(new ExtensionInstallPrompt(web_contents)); | 285 install_ui_.reset(new ExtensionInstallPrompt(web_contents)); |
| 287 if (delegated_username_.empty()) { | 286 if (delegated_username_.empty()) { |
| 288 install_ui_->ConfirmBundleInstall(this, &icon_, permissions.get()); | 287 install_ui_->ConfirmBundleInstall(this, &icon_, permissions.Pass()); |
| 289 } else { | 288 } else { |
| 290 install_ui_->ConfirmPermissionsForDelegatedBundleInstall( | 289 install_ui_->ConfirmPermissionsForDelegatedBundleInstall( |
| 291 this, delegated_username_, &icon_, permissions.get()); | 290 this, delegated_username_, &icon_, permissions.Pass()); |
| 292 } | 291 } |
| 293 } | 292 } |
| 294 } | 293 } |
| 295 | 294 |
| 296 void BundleInstaller::ShowInstalledBubbleIfDone() { | 295 void BundleInstaller::ShowInstalledBubbleIfDone() { |
| 297 // We're ready to show the installed bubble when no items are pending. | 296 // We're ready to show the installed bubble when no items are pending. |
| 298 if (HasItemWithState(Item::STATE_PENDING)) | 297 if (HasItemWithState(Item::STATE_PENDING)) |
| 299 return; | 298 return; |
| 300 | 299 |
| 301 if (browser_) | 300 if (browser_) |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 | 358 |
| 360 ShowInstalledBubbleIfDone(); | 359 ShowInstalledBubbleIfDone(); |
| 361 } | 360 } |
| 362 | 361 |
| 363 void BundleInstaller::OnBrowserRemoved(Browser* browser) { | 362 void BundleInstaller::OnBrowserRemoved(Browser* browser) { |
| 364 if (browser_ == browser) | 363 if (browser_ == browser) |
| 365 browser_ = nullptr; | 364 browser_ = nullptr; |
| 366 } | 365 } |
| 367 | 366 |
| 368 } // namespace extensions | 367 } // namespace extensions |
| OLD | NEW |