PageRenderTime 42ms CodeModel.GetById 19ms app.highlight 16ms RepoModel.GetById 1ms app.codeStats 0ms

/thirdparty/breakpad/client/mac/sender/crash_report_sender.h

http://github.com/tomahawk-player/tomahawk
C++ Header | 117 lines | 46 code | 13 blank | 58 comment | 0 complexity | ab38c5109a76760cb445d5686c2d3b89 MD5 | raw file
  1// Copyright (c) 2006, Google Inc.
  2// All rights reserved.
  3//
  4// Redistribution and use in source and binary forms, with or without
  5// modification, are permitted provided that the following conditions are
  6// met:
  7//
  8//     * Redistributions of source code must retain the above copyright
  9// notice, this list of conditions and the following disclaimer.
 10//     * Redistributions in binary form must reproduce the above
 11// copyright notice, this list of conditions and the following disclaimer
 12// in the documentation and/or other materials provided with the
 13// distribution.
 14//     * Neither the name of Google Inc. nor the names of its
 15// contributors may be used to endorse or promote products derived from
 16// this software without specific prior written permission.
 17//
 18// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 19// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 20// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 21// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 22// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 23// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 24// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 25// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 26// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 27// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 28// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 29//
 30// This component uses the HTTPMultipartUpload of the breakpad project to send
 31// the minidump and associated data to the crash reporting servers.
 32// It will perform throttling based on the parameters passed to it and will
 33// prompt the user to send the minidump.
 34
 35#import <Cocoa/Cocoa.h>
 36
 37#include "client/mac/sender/uploader.h"
 38#import "GTMDefines.h"
 39
 40// We're sublcassing NSTextField in order to override a particular
 41// method (see the implementation) that lets us reject changes if they
 42// are longer than a particular length.  Bindings would normally solve
 43// this problem, but when we implemented a validation method, and
 44// returned NO for strings that were too long, the UI was not updated
 45// right away, which was a poor user experience.  The UI would be
 46// updated as soon as the text field lost first responder status,
 47// which isn't soon enough.  It is a known bug that the UI KVO didn't
 48// work in the middle of a validation.
 49@interface LengthLimitingTextField : NSTextField {
 50  @private
 51   NSUInteger maximumLength_;
 52}
 53
 54- (void)setMaximumLength:(NSUInteger)maxLength;
 55@end
 56
 57@interface Reporter : NSObject {
 58 @public
 59  IBOutlet NSWindow *alertWindow_;        // The alert window
 60
 61  // Grouping boxes used for resizing.
 62  IBOutlet NSBox *headerBox_;
 63  IBOutlet NSBox *preEmailBox_;
 64  IBOutlet NSBox *emailSectionBox_;
 65  // Localized elements (or things that need to be moved during localization).
 66  IBOutlet NSTextField                *dialogTitle_;
 67  IBOutlet NSTextField                *commentMessage_;
 68  IBOutlet NSTextField                *emailMessage_;
 69  IBOutlet NSTextField                *emailLabel_;
 70  IBOutlet NSTextField                *privacyLinkLabel_;
 71  IBOutlet NSButton                   *sendButton_;
 72  IBOutlet NSButton                   *cancelButton_;
 73  IBOutlet LengthLimitingTextField    *emailEntryField_;
 74  IBOutlet LengthLimitingTextField    *commentsEntryField_;
 75  IBOutlet NSTextField                *countdownLabel_;
 76  IBOutlet NSView                     *privacyLinkArrow_;
 77
 78  // Text field bindings, for user input.
 79  NSString *commentsValue_;                // Comments from the user
 80  NSString *emailValue_;                   // Email from the user
 81  NSString *countdownMessage_;             // Message indicating time
 82                                           // left for input.
 83 @private
 84  NSTimeInterval remainingDialogTime_;     // Keeps track of how long
 85                                           // we have until we cancel
 86                                           // the dialog
 87  NSTimer *messageTimer_;                  // Timer we use to update
 88                                           // the dialog
 89  Uploader* uploader_;                     // Uploader we use to send the data.
 90}
 91
 92// Stops the modal panel with an NSAlertDefaultReturn value. This is the action
 93// invoked by the "Send Report" button.
 94- (IBAction)sendReport:(id)sender;
 95// Stops the modal panel with an NSAlertAlternateReturn value. This is the
 96// action invoked by the "Cancel" button.
 97- (IBAction)cancel:(id)sender;
 98// Opens the Privacy Policy url in the default web browser.
 99- (IBAction)showPrivacyPolicy:(id)sender;
100
101// Delegate methods for the NSTextField for comments. We want to capture the
102// Return key and use it to send the message when no text has been entered.
103// Otherwise, we want Return to add a carriage return to the comments field.
104- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView
105                          doCommandBySelector:(SEL)commandSelector;
106
107// Accessors to make bindings work
108- (NSString *)commentsValue;
109- (void)setCommentsValue:(NSString *)value;
110
111- (NSString *)emailValue;
112- (void)setEmailValue:(NSString *)value;
113
114- (NSString *)countdownMessage;
115- (void)setCountdownMessage:(NSString *)value;
116
117@end