| Index: remoting/host/installer/mac/uninstaller/remoting_uninstaller_app.mm
|
| ===================================================================
|
| --- remoting/host/installer/mac/uninstaller/remoting_uninstaller_app.mm (revision 0)
|
| +++ remoting/host/installer/mac/uninstaller/remoting_uninstaller_app.mm (working copy)
|
| @@ -0,0 +1,101 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "remoting/host/installer/mac/uninstaller/remoting_uninstaller_app.h"
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
| +
|
| +#include "base/mac/scoped_cftyperef.h"
|
| +#include "remoting/host/installer/mac/uninstaller/remoting_uninstaller.h"
|
| +
|
| +@implementation RemotingUninstallerAppDelegate
|
| +
|
| +- (void)dealloc {
|
| + [super dealloc];
|
| +}
|
| +
|
| +- (void)applicationDidFinishLaunching:(NSNotification*)aNotification {
|
| +}
|
| +
|
| +- (void)showSuccess:(bool)success withMessage:(NSString*) message {
|
| + NSString* summary = success ? @"Uninstall succeeded" : @"Uninstall failed";
|
| + NSAlert* alert = [NSAlert alertWithMessageText:summary
|
| + defaultButton:@"OK"
|
| + alternateButton:nil
|
| + otherButton:nil
|
| + informativeTextWithFormat:message];
|
| + [alert runModal];
|
| +}
|
| +
|
| +- (IBAction)uninstall:(NSButton*)sender {
|
| + @try {
|
| + NSLog(@"Chrome Remote Desktop uninstall starting.");
|
| +
|
| + RemotingUninstaller* uninstaller =
|
| + [[[RemotingUninstaller alloc] init] autorelease];
|
| + OSStatus status = [uninstaller remotingUninstall];
|
| +
|
| + NSLog(@"Chrome Remote Desktop Host uninstall complete.");
|
| +
|
| + bool success = false;
|
| + NSString* message = NULL;
|
| + if (status == errAuthorizationSuccess) {
|
| + success = true;
|
| + message = @"Chrome Remote Desktop Host successfully uninstalled.";
|
| + } else if (status == errAuthorizationCanceled) {
|
| + message = @"Chrome Remote Desktop Host uninstall canceled.";
|
| + } else if (status == errAuthorizationDenied) {
|
| + message = @"Chrome Remote Desktop Host uninstall authorization denied.";
|
| + } else {
|
| + [NSException raise:@"AuthorizationCopyRights Failure"
|
| + format:@"Error during AuthorizationCopyRights status=%ld", status];
|
| + }
|
| + if (message != NULL) {
|
| + NSLog(@"Uninstall %s: %@", success ? "succeeded" : "failed", message);
|
| + [self showSuccess:success withMessage:message];
|
| + }
|
| + }
|
| + @catch (NSException* exception) {
|
| + NSLog(@"Exception %@ %@", [exception name], [exception reason]);
|
| + NSString* message =
|
| + @"Error! Unable to uninstall Chrome Remote Desktop Host.";
|
| + [self showSuccess:false withMessage:message];
|
| + }
|
| +
|
| + [NSApp terminate:self];
|
| +}
|
| +
|
| +- (IBAction)cancel:(id)sender {
|
| + [NSApp terminate:self];
|
| +}
|
| +
|
| +- (IBAction)handleMenuClose:(NSMenuItem*)sender {
|
| + [NSApp terminate:self];
|
| +}
|
| +
|
| +@end
|
| +
|
| +int main(int argc, char* argv[])
|
| +{
|
| + // The no-ui option skips the UI confirmation dialogs. This is provided as
|
| + // a convenience for our automated testing.
|
| + // There will still be an elevation prompt unless the command is run as root.
|
| + if (argc == 2 && !strcmp(argv[1], "--no-ui")) {
|
| + @autoreleasepool {
|
| + NSLog(@"Chrome Remote Desktop uninstall starting.");
|
| + NSLog(@"--no-ui : Suppressing UI");
|
| +
|
| + RemotingUninstaller* uninstaller =
|
| + [[[RemotingUninstaller alloc] init] autorelease];
|
| + OSStatus status = [uninstaller remotingUninstall];
|
| +
|
| + NSLog(@"Chrome Remote Desktop Host uninstall complete.");
|
| + NSLog(@"Status = %ld", status);
|
| + return status != errAuthorizationSuccess;
|
| + }
|
| + } else {
|
| + return NSApplicationMain(argc, (const char**)argv);
|
| + }
|
| +}
|
| +
|
|
|
| Property changes on: remoting/host/installer/mac/uninstaller/remoting_uninstaller_app.mm
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| ## -0,0 +1 ##
|
| +LF
|
| \ No newline at end of property
|
|
|