cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shaz...@apache.org
Subject [17/57] [abbrv] cordova-plugins git commit: Merge commit '1547b6bcc17fad312449c2d522935370e0552b77' as 'local-webserver/src/ios/GCDWebServer'
Date Mon, 25 Jul 2016 07:57:03 GMT
http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/9f15b12f/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m
----------------------------------------------------------------------
diff --cc local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m
index 0000000,0000000..2004327
new file mode 100644
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m
@@@ -1,0 -1,0 +1,181 @@@
++/*
++ Copyright (c) 2012-2014, Pierre-Olivier Latour
++ All rights reserved.
++ 
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * The name of Pierre-Olivier Latour may not be used to endorse
++ or promote products derived from this software without specific
++ prior written permission.
++ 
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#if !__has_feature(objc_arc)
++#error GCDWebServer requires ARC
++#endif
++
++#import <sys/stat.h>
++
++#import "GCDWebServerPrivate.h"
++
++#define kFileReadBufferSize (32 * 1024)
++
++@interface GCDWebServerFileResponse () {
++@private
++  NSString* _path;
++  NSUInteger _offset;
++  NSUInteger _size;
++  int _file;
++}
++@end
++
++@implementation GCDWebServerFileResponse
++
+++ (instancetype)responseWithFile:(NSString*)path {
++  return [[[self class] alloc] initWithFile:path];
++}
++
+++ (instancetype)responseWithFile:(NSString*)path isAttachment:(BOOL)attachment {
++  return [[[self class] alloc] initWithFile:path isAttachment:attachment];
++}
++
+++ (instancetype)responseWithFile:(NSString*)path byteRange:(NSRange)range {
++  return [[[self class] alloc] initWithFile:path byteRange:range];
++}
++
+++ (instancetype)responseWithFile:(NSString*)path byteRange:(NSRange)range isAttachment:(BOOL)attachment
{
++  return [[[self class] alloc] initWithFile:path byteRange:range isAttachment:attachment];
++}
++
++- (instancetype)initWithFile:(NSString*)path {
++  return [self initWithFile:path byteRange:NSMakeRange(NSUIntegerMax, 0) isAttachment:NO];
++}
++
++- (instancetype)initWithFile:(NSString*)path isAttachment:(BOOL)attachment {
++  return [self initWithFile:path byteRange:NSMakeRange(NSUIntegerMax, 0) isAttachment:attachment];
++}
++
++- (instancetype)initWithFile:(NSString*)path byteRange:(NSRange)range {
++  return [self initWithFile:path byteRange:range isAttachment:NO];
++}
++
++static inline NSDate* _NSDateFromTimeSpec(const struct timespec* t) {
++  return [NSDate dateWithTimeIntervalSince1970:((NSTimeInterval)t->tv_sec + (NSTimeInterval)t->tv_nsec
/ 1000000000.0)];
++}
++
++- (instancetype)initWithFile:(NSString*)path byteRange:(NSRange)range isAttachment:(BOOL)attachment
{
++  struct stat info;
++  if (lstat([path fileSystemRepresentation], &info) || !(info.st_mode & S_IFREG))
{
++    GWS_DNOT_REACHED();
++    return nil;
++  }
++#ifndef __LP64__
++  if (info.st_size >= (off_t)4294967295) {  // In 32 bit mode, we can't handle files
greater than 4 GiBs (don't use "NSUIntegerMax" here to avoid potential unsigned to signed
conversion issues)
++    GWS_DNOT_REACHED();
++    return nil;
++  }
++#endif
++  NSUInteger fileSize = (NSUInteger)info.st_size;
++  
++  BOOL hasByteRange = GCDWebServerIsValidByteRange(range);
++  if (hasByteRange) {
++    if (range.location != NSUIntegerMax) {
++      range.location = MIN(range.location, fileSize);
++      range.length = MIN(range.length, fileSize - range.location);
++    } else {
++      range.length = MIN(range.length, fileSize);
++      range.location = fileSize - range.length;
++    }
++    if (range.length == 0) {
++      return nil;  // TODO: Return 416 status code and "Content-Range: bytes */{file length}"
header
++    }
++  } else {
++    range.location = 0;
++    range.length = fileSize;
++  }
++  
++  if ((self = [super init])) {
++    _path = [path copy];
++    _offset = range.location;
++    _size = range.length;
++    if (hasByteRange) {
++      [self setStatusCode:kGCDWebServerHTTPStatusCode_PartialContent];
++      [self setValue:[NSString stringWithFormat:@"bytes %lu-%lu/%lu", (unsigned long)_offset,
(unsigned long)(_offset + _size - 1), (unsigned long)fileSize] forAdditionalHeader:@"Content-Range"];
++      GWS_LOG_DEBUG(@"Using content bytes range [%lu-%lu] for file \"%@\"", (unsigned long)_offset,
(unsigned long)(_offset + _size - 1), path);
++    }
++    
++    if (attachment) {
++      NSString* fileName = [path lastPathComponent];
++      NSData* data = [[fileName stringByReplacingOccurrencesOfString:@"\"" withString:@""]
dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];
++      NSString* lossyFileName = data ? [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding]
: nil;
++      if (lossyFileName) {
++        NSString* value = [NSString stringWithFormat:@"attachment; filename=\"%@\"; filename*=UTF-8''%@",
lossyFileName, GCDWebServerEscapeURLString(fileName)];
++        [self setValue:value forAdditionalHeader:@"Content-Disposition"];
++      } else {
++        GWS_DNOT_REACHED();
++      }
++    }
++    
++    self.contentType = GCDWebServerGetMimeTypeForExtension([_path pathExtension]);
++    self.contentLength = _size;
++    self.lastModifiedDate = _NSDateFromTimeSpec(&info.st_mtimespec);
++    self.eTag = [NSString stringWithFormat:@"%llu/%li/%li", info.st_ino, info.st_mtimespec.tv_sec,
info.st_mtimespec.tv_nsec];
++  }
++  return self;
++}
++
++- (BOOL)open:(NSError**)error {
++  _file = open([_path fileSystemRepresentation], O_NOFOLLOW | O_RDONLY);
++  if (_file <= 0) {
++    *error = GCDWebServerMakePosixError(errno);
++    return NO;
++  }
++  if (lseek(_file, _offset, SEEK_SET) != (off_t)_offset) {
++    *error = GCDWebServerMakePosixError(errno);
++    close(_file);
++    return NO;
++  }
++  return YES;
++}
++
++- (NSData*)readData:(NSError**)error {
++  size_t length = MIN((NSUInteger)kFileReadBufferSize, _size);
++  NSMutableData* data = [[NSMutableData alloc] initWithLength:length];
++  ssize_t result = read(_file, data.mutableBytes, length);
++  if (result < 0) {
++    *error = GCDWebServerMakePosixError(errno);
++    return nil;
++  }
++  if (result > 0) {
++    [data setLength:result];
++    _size -= result;
++  }
++  return data;
++}
++
++- (void)close {
++  close(_file);
++}
++
++- (NSString*)description {
++  NSMutableString* description = [NSMutableString stringWithString:[super description]];
++  [description appendFormat:@"\n\n{%@}", _path];
++  return description;
++}
++
++@end

http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/9f15b12f/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h
----------------------------------------------------------------------
diff --cc local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h
index 0000000,0000000..4f39625
new file mode 100644
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h
@@@ -1,0 -1,0 +1,78 @@@
++/*
++ Copyright (c) 2012-2014, Pierre-Olivier Latour
++ All rights reserved.
++ 
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * The name of Pierre-Olivier Latour may not be used to endorse
++ or promote products derived from this software without specific
++ prior written permission.
++ 
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#import "GCDWebServerResponse.h"
++
++/**
++ *  The GCDWebServerStreamBlock is called to stream the data for the HTTP body.
++ *  The block must return empty NSData when done or nil on error and set the
++ *  "error" argument which is guaranteed to be non-NULL.
++ */
++typedef NSData* (^GCDWebServerStreamBlock)(NSError** error);
++
++/**
++ *  The GCDWebServerAsyncStreamBlock works like the GCDWebServerStreamBlock
++ *  except the streamed data can be returned at a later time allowing for
++ *  truly asynchronous generation of the data.
++ *
++ *  The block must return empty NSData when done or nil on error and set the
++ *  "error" argument which is guaranteed to be non-NULL.
++ *
++ *  The block must regularly call "completionBlock" passing new streamed data.
++ *  Eventually it must call "completionBlock" passing an empty NSData indicating
++ *  the end of the stream has been reached, or pass nil and an NSError in case of
++ *  error.
++ */
++typedef void (^GCDWebServerAsyncStreamBlock)(GCDWebServerBodyReaderCompletionBlock completionBlock);
++
++/**
++ *  The GCDWebServerStreamedResponse subclass of GCDWebServerResponse streams
++ *  the body of the HTTP response using a GCD block.
++ */
++@interface GCDWebServerStreamedResponse : GCDWebServerResponse
++
++/**
++ *  Creates a response with streamed data and a given content type.
++ */
+++ (instancetype)responseWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block;
++
++/**
++ *  Creates a response with async streamed data and a given content type.
++ */
+++ (instancetype)responseWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block;
++
++/**
++ *  Initializes a response with streamed data and a given content type.
++ */
++- (instancetype)initWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block;
++
++/**
++ *  This method is the designated initializer for the class.
++ */
++- (instancetype)initWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block;
++
++@end

http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/9f15b12f/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m
----------------------------------------------------------------------
diff --cc local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m
index 0000000,0000000..7f96943
new file mode 100644
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m
@@@ -1,0 -1,0 +1,79 @@@
++/*
++ Copyright (c) 2012-2014, Pierre-Olivier Latour
++ All rights reserved.
++ 
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * The name of Pierre-Olivier Latour may not be used to endorse
++ or promote products derived from this software without specific
++ prior written permission.
++ 
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#if !__has_feature(objc_arc)
++#error GCDWebServer requires ARC
++#endif
++
++#import "GCDWebServerPrivate.h"
++
++@interface GCDWebServerStreamedResponse () {
++@private
++  GCDWebServerAsyncStreamBlock _block;
++}
++@end
++
++@implementation GCDWebServerStreamedResponse
++
+++ (instancetype)responseWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block
{
++  return [[[self class] alloc] initWithContentType:type streamBlock:block];
++}
++
+++ (instancetype)responseWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block
{
++  return [[[self class] alloc] initWithContentType:type asyncStreamBlock:block];
++}
++
++- (instancetype)initWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block
{
++  return [self initWithContentType:type asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock
completionBlock) {
++    
++    NSError* error = nil;
++    NSData* data = block(&error);
++    completionBlock(data, error);
++    
++  }];
++}
++
++- (instancetype)initWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block
{
++  if ((self = [super init])) {
++    _block = [block copy];
++    
++    self.contentType = type;
++  }
++  return self;
++}
++
++- (void)asyncReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block {
++  _block(block);
++}
++
++- (NSString*)description {
++  NSMutableString* description = [NSMutableString stringWithString:[super description]];
++  [description appendString:@"\n\n<STREAM>"];
++  return description;
++}
++
++@end

http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/9f15b12f/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/Info.plist
----------------------------------------------------------------------
diff --cc local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/Info.plist
index 0000000,0000000..e25dc75
new file mode 100644
Binary files differ

http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/9f15b12f/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap-theme.css
----------------------------------------------------------------------
diff --cc local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap-theme.css
index 0000000,0000000..a406992
new file mode 100644
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap-theme.css
@@@ -1,0 -1,0 +1,347 @@@
++/*!
++ * Bootstrap v3.1.1 (http://getbootstrap.com)
++ * Copyright 2011-2014 Twitter, Inc.
++ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
++ */
++
++.btn-default,
++.btn-primary,
++.btn-success,
++.btn-info,
++.btn-warning,
++.btn-danger {
++  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
++  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
++          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
++}
++.btn-default:active,
++.btn-primary:active,
++.btn-success:active,
++.btn-info:active,
++.btn-warning:active,
++.btn-danger:active,
++.btn-default.active,
++.btn-primary.active,
++.btn-success.active,
++.btn-info.active,
++.btn-warning.active,
++.btn-danger.active {
++  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
++          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
++}
++.btn:active,
++.btn.active {
++  background-image: none;
++}
++.btn-default {
++  text-shadow: 0 1px 0 #fff;
++  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
++  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-color: #dbdbdb;
++  border-color: #ccc;
++}
++.btn-default:hover,
++.btn-default:focus {
++  background-color: #e0e0e0;
++  background-position: 0 -15px;
++}
++.btn-default:active,
++.btn-default.active {
++  background-color: #e0e0e0;
++  border-color: #dbdbdb;
++}
++.btn-primary {
++  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
++  background-image:         linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-color: #2b669a;
++}
++.btn-primary:hover,
++.btn-primary:focus {
++  background-color: #2d6ca2;
++  background-position: 0 -15px;
++}
++.btn-primary:active,
++.btn-primary.active {
++  background-color: #2d6ca2;
++  border-color: #2b669a;
++}
++.btn-success {
++  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
++  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-color: #3e8f3e;
++}
++.btn-success:hover,
++.btn-success:focus {
++  background-color: #419641;
++  background-position: 0 -15px;
++}
++.btn-success:active,
++.btn-success.active {
++  background-color: #419641;
++  border-color: #3e8f3e;
++}
++.btn-info {
++  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
++  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-color: #28a4c9;
++}
++.btn-info:hover,
++.btn-info:focus {
++  background-color: #2aabd2;
++  background-position: 0 -15px;
++}
++.btn-info:active,
++.btn-info.active {
++  background-color: #2aabd2;
++  border-color: #28a4c9;
++}
++.btn-warning {
++  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
++  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-color: #e38d13;
++}
++.btn-warning:hover,
++.btn-warning:focus {
++  background-color: #eb9316;
++  background-position: 0 -15px;
++}
++.btn-warning:active,
++.btn-warning.active {
++  background-color: #eb9316;
++  border-color: #e38d13;
++}
++.btn-danger {
++  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
++  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-color: #b92c28;
++}
++.btn-danger:hover,
++.btn-danger:focus {
++  background-color: #c12e2a;
++  background-position: 0 -15px;
++}
++.btn-danger:active,
++.btn-danger.active {
++  background-color: #c12e2a;
++  border-color: #b92c28;
++}
++.thumbnail,
++.img-thumbnail {
++  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
++          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
++}
++.dropdown-menu > li > a:hover,
++.dropdown-menu > li > a:focus {
++  background-color: #e8e8e8;
++  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
++  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.dropdown-menu > .active > a,
++.dropdown-menu > .active > a:hover,
++.dropdown-menu > .active > a:focus {
++  background-color: #357ebd;
++  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
++  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.navbar-default {
++  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
++  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++  border-radius: 4px;
++  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
++          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
++}
++.navbar-default .navbar-nav > .active > a {
++  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
++  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3',
GradientType=0);
++  background-repeat: repeat-x;
++  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
++          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
++}
++.navbar-brand,
++.navbar-nav > li > a {
++  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
++}
++.navbar-inverse {
++  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
++  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222',
GradientType=0);
++  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
++  background-repeat: repeat-x;
++}
++.navbar-inverse .navbar-nav > .active > a {
++  background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
++  background-image:         linear-gradient(to bottom, #222 0%, #282828 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828',
GradientType=0);
++  background-repeat: repeat-x;
++  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
++          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
++}
++.navbar-inverse .navbar-brand,
++.navbar-inverse .navbar-nav > li > a {
++  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
++}
++.navbar-static-top,
++.navbar-fixed-top,
++.navbar-fixed-bottom {
++  border-radius: 0;
++}
++.alert {
++  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
++  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
++          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
++}
++.alert-success {
++  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
++  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc',
GradientType=0);
++  background-repeat: repeat-x;
++  border-color: #b2dba1;
++}
++.alert-info {
++  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
++  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0',
GradientType=0);
++  background-repeat: repeat-x;
++  border-color: #9acfea;
++}
++.alert-warning {
++  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
++  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0',
GradientType=0);
++  background-repeat: repeat-x;
++  border-color: #f5e79e;
++}
++.alert-danger {
++  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
++  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3',
GradientType=0);
++  background-repeat: repeat-x;
++  border-color: #dca7a7;
++}
++.progress {
++  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
++  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.progress-bar {
++  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
++  background-image:         linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.progress-bar-success {
++  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
++  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.progress-bar-info {
++  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
++  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.progress-bar-warning {
++  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
++  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.progress-bar-danger {
++  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
++  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.list-group {
++  border-radius: 4px;
++  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
++          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
++}
++.list-group-item.active,
++.list-group-item.active:hover,
++.list-group-item.active:focus {
++  text-shadow: 0 -1px 0 #3071a9;
++  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
++  background-image:         linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3',
GradientType=0);
++  background-repeat: repeat-x;
++  border-color: #3278b3;
++}
++.panel {
++  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
++          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
++}
++.panel-default > .panel-heading {
++  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
++  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.panel-primary > .panel-heading {
++  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
++  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.panel-success > .panel-heading {
++  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
++  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.panel-info > .panel-heading {
++  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
++  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.panel-warning > .panel-heading {
++  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
++  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.panel-danger > .panel-heading {
++  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
++  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc',
GradientType=0);
++  background-repeat: repeat-x;
++}
++.well {
++  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
++  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
++  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5',
GradientType=0);
++  background-repeat: repeat-x;
++  border-color: #dcdcdc;
++  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
++          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
++}
++/*# sourceMappingURL=bootstrap-theme.css.map */


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message