Brion VIBBER has submitted this change and it was merged.

Change subject: Changing Wikipedia Zero On/Off.
......................................................................


Changing Wikipedia Zero On/Off.

* Now a fixed box at bottom of screen when On, temporary when Off.

Change-Id: I0a0924af08682fd82398a6d5a827a589811f0122
---
M Wikipedia.xcodeproj/project.pbxproj
M wikipedia/AppDelegate.m
M wikipedia/Base.lproj/Main_iPhone.storyboard
M wikipedia/Data/Operations/DownloadWikipediaZeroMessageOp.m
M wikipedia/View Controllers/TopNav/NavController.h
M wikipedia/View Controllers/TopNav/NavController.m
M wikipedia/View Controllers/WebView/WebViewController.m
A wikipedia/View Controllers/WebView/ZeroStatusLabel.h
A wikipedia/View Controllers/WebView/ZeroStatusLabel.m
M wikipedia/Web Image Interception/URLCache.m
M wikipedia/Zero/ZeroConfigState.h
M wikipedia/Zero/ZeroConfigState.m
12 files changed, 168 insertions(+), 40 deletions(-)

Approvals:
  Mhurd: Looks good to me, but someone else must approve
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/Wikipedia.xcodeproj/project.pbxproj 
b/Wikipedia.xcodeproj/project.pbxproj
index 72dee5e..926c320 100644
--- a/Wikipedia.xcodeproj/project.pbxproj
+++ b/Wikipedia.xcodeproj/project.pbxproj
@@ -11,6 +11,7 @@
                0402E10F18A3ABA900C3B679 /* NavBarContainerView.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 0402E10E18A3ABA900C3B679 /* 
NavBarContainerView.m */; };
                0406CEF618F8C390007EE43E /* LogEventOp.m in Sources */ = {isa = 
PBXBuildFile; fileRef = 0406CEF518F8C390007EE43E /* LogEventOp.m */; };
                0406CEF918F8D6F7007EE43E /* UIViewController+LogEvent.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 0406CEF818F8D6F7007EE43E /* 
UIViewController+LogEvent.m */; };
+               0406CEFC18FC88A6007EE43E /* ZeroStatusLabel.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 0406CEFB18FC88A6007EE43E /* ZeroStatusLabel.m 
*/; };
                04082B5318ADA25A00FAF3D6 /* text_field_x_circle_gray.png in 
Resources */ = {isa = PBXBuildFile; fileRef = 04082B5118ADA25A00FAF3D6 /* 
text_field_x_circle_gray.png */; };
                04082B5518ADA25A00FAF3D6 /* [email protected] in 
Resources */ = {isa = PBXBuildFile; fileRef = 04082B5218ADA25A00FAF3D6 /* 
[email protected] */; };
                04090A33187F53E400577EDF /* clear.png in Resources */ = {isa = 
PBXBuildFile; fileRef = 04090A32187F53E400577EDF /* clear.png */; };
@@ -194,6 +195,8 @@
                0406CEF518F8C390007EE43E /* LogEventOp.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= LogEventOp.m; sourceTree = "<group>"; };
                0406CEF718F8D6F7007EE43E /* UIViewController+LogEvent.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = "UIViewController+LogEvent.h"; sourceTree = "<group>"; };
                0406CEF818F8D6F7007EE43E /* UIViewController+LogEvent.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = "UIViewController+LogEvent.m"; sourceTree = 
"<group>"; };
+               0406CEFA18FC88A6007EE43E /* ZeroStatusLabel.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
ZeroStatusLabel.h; sourceTree = "<group>"; };
+               0406CEFB18FC88A6007EE43E /* ZeroStatusLabel.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= ZeroStatusLabel.m; sourceTree = "<group>"; };
                04082B5118ADA25A00FAF3D6 /* text_field_x_circle_gray.png */ = 
{isa = PBXFileReference; lastKnownFileType = image.png; path = 
text_field_x_circle_gray.png; sourceTree = "<group>"; };
                04082B5218ADA25A00FAF3D6 /* [email protected] */ 
= {isa = PBXFileReference; lastKnownFileType = image.png; path = 
"[email protected]"; sourceTree = "<group>"; };
                04090A32187F53E400577EDF /* clear.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = clear.png; sourceTree = 
"<group>"; };
@@ -740,6 +743,8 @@
                04478625185145090050563B /* WebView */ = {
                        isa = PBXGroup;
                        children = (
+                               0406CEFA18FC88A6007EE43E /* ZeroStatusLabel.h 
*/,
+                               0406CEFB18FC88A6007EE43E /* ZeroStatusLabel.m 
*/,
                                0447862D185145090050563B /* WebViewController.h 
*/,
                                0447862E185145090050563B /* WebViewController.m 
*/,
                        );
@@ -1501,6 +1506,7 @@
                                04293000185FC2C7002A13FC /* QueuesSingleton.m 
in Sources */,
                                04D34DC91863F6CC00610A87 /* Saved.m in Sources 
*/,
                                04EA3A5B18D25D7700E2F5C4 /* 
UINavigationController+Alert.m in Sources */,
+                               0406CEFC18FC88A6007EE43E /* ZeroStatusLabel.m 
in Sources */,
                                04D34DE11868E21F00610A87 /* 
Article+Convenience.m in Sources */,
                                04D34DB91863F69500610A87 /* DiscoveryContext.m 
in Sources */,
                                04142A8F184F974E006EF779 /* NSDate-Utilities.m 
in Sources */,
diff --git a/wikipedia/AppDelegate.m b/wikipedia/AppDelegate.m
index b71bb37..c2aacdf 100644
--- a/wikipedia/AppDelegate.m
+++ b/wikipedia/AppDelegate.m
@@ -40,7 +40,8 @@
         @"Site": @"wikipedia.org",
         @"ZeroWarnWhenLeaving" : @YES,
         @"ZeroOnDialogShownOnce" : @NO,
-        @"ZeroOffDialogShownOnce" : @NO
+        @"ZeroOffDialogShownOnce" : @NO,
+        @"FakeZeroOn" : @NO
     };
     [[NSUserDefaults standardUserDefaults] 
registerDefaults:userDefaultsDefaults];
 }
diff --git a/wikipedia/Base.lproj/Main_iPhone.storyboard 
b/wikipedia/Base.lproj/Main_iPhone.storyboard
index fdae2ba..4dde14f 100644
--- a/wikipedia/Base.lproj/Main_iPhone.storyboard
+++ b/wikipedia/Base.lproj/Main_iPhone.storyboard
@@ -988,16 +988,27 @@
                                     <constraint firstAttribute="centerY" 
secondItem="vSI-Du-yis" secondAttribute="centerY" id="q7i-mm-NjB"/>
                                 </constraints>
                             </view>
+                            <label opaque="NO" clipsSubviews="YES" 
userInteractionEnabled="NO" alpha="0.93000000000000005" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" 
textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="320" translatesAutoresizingMaskIntoConstraints="NO" 
id="aCV-ih-PXn" userLabel="Zero Status Label" customClass="ZeroStatusLabel">
+                                <rect key="frame" x="0.0" y="504" width="320" 
height="0.0"/>
+                                <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" white="0.0" 
alpha="1" colorSpace="calibratedWhite"/>
+                                <fontDescription key="fontDescription" 
type="system" pointSize="10"/>
+                                <color key="textColor" white="1" alpha="1" 
colorSpace="calibratedWhite"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                         </subviews>
                         <color key="backgroundColor" red="1" green="1" 
blue="1" alpha="1" colorSpace="calibratedRGB"/>
                         <constraints>
                             <constraint firstItem="WeL-Mj-Zsh" 
firstAttribute="top" secondItem="C8y-0k-FBq" secondAttribute="bottom" 
id="3Gh-gP-O56"/>
                             <constraint firstItem="WeL-Mj-Zsh" 
firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" 
id="3Zs-jL-a48"/>
+                            <constraint firstAttribute="trailing" 
secondItem="aCV-ih-PXn" secondAttribute="trailing" id="5C2-ao-aE8"/>
                             <constraint firstItem="WeL-Mj-Zsh" 
firstAttribute="leading" secondItem="F4Q-Xc-ImV" secondAttribute="leading" 
id="87k-zE-vFH"/>
                             <constraint firstAttribute="trailing" 
secondItem="F4Q-Xc-ImV" secondAttribute="trailing" id="D19-HH-fX5"/>
                             <constraint firstAttribute="trailing" 
secondItem="WeL-Mj-Zsh" secondAttribute="trailing" id="QSr-uN-iN4"/>
                             <constraint firstAttribute="bottom" 
secondItem="WeL-Mj-Zsh" secondAttribute="bottom" id="UTu-Ve-ee9"/>
-                            <constraint firstAttribute="bottom" 
secondItem="F4Q-Xc-ImV" secondAttribute="bottom" id="aO2-JM-8QC"/>
+                            <constraint firstItem="aCV-ih-PXn" 
firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" 
id="asD-mW-6X0"/>
+                            <constraint firstItem="aCV-ih-PXn" 
firstAttribute="top" secondItem="F4Q-Xc-ImV" secondAttribute="bottom" 
id="bCO-Yn-w7h"/>
+                            <constraint firstAttribute="bottom" 
secondItem="aCV-ih-PXn" secondAttribute="bottom" id="bls-Ke-Bwu"/>
                         </constraints>
                     </view>
                     <extendedEdge key="edgesForExtendedLayout"/>
@@ -1014,6 +1025,7 @@
                         <outlet property="webView" destination="WeL-Mj-Zsh" 
id="UAL-nl-cQD"/>
                         <outlet property="webViewLeftConstraint" 
destination="3Zs-jL-a48" id="fnl-sG-tsS"/>
                         <outlet property="webViewRightConstraint" 
destination="QSr-uN-iN4" id="EG4-9F-vyJ"/>
+                        <outlet property="zeroStatusLabel" 
destination="aCV-ih-PXn" id="uhp-ae-eMa"/>
                     </connections>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" 
id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
diff --git a/wikipedia/Data/Operations/DownloadWikipediaZeroMessageOp.m 
b/wikipedia/Data/Operations/DownloadWikipediaZeroMessageOp.m
index d56bd8a..c415c55 100644
--- a/wikipedia/Data/Operations/DownloadWikipediaZeroMessageOp.m
+++ b/wikipedia/Data/Operations/DownloadWikipediaZeroMessageOp.m
@@ -56,6 +56,14 @@
             
             NSString *zeroRatedMessage = json.count > 0 ? [json 
objectForKey:@"message"] : nil;
             
+            // For testing Wikipedia Zero visual flourishes.
+            // Go to WebViewController.m and uncomment the W0 part,
+            // then when running the app in the simulator fire the
+            // memory warning to toggle the fake state on or off.
+            if ([SessionSingleton sharedInstance].zeroConfigState.fakeZeroOn) {
+                zeroRatedMessage = @"Free Wikipedia by Test Operator";
+            }
+            
             if (zeroRatedMessage) {
                 completionBlock(zeroRatedMessage);
             }
diff --git a/wikipedia/View Controllers/TopNav/NavController.h b/wikipedia/View 
Controllers/TopNav/NavController.h
index 28c0f20..c35a662 100644
--- a/wikipedia/View Controllers/TopNav/NavController.h
+++ b/wikipedia/View Controllers/TopNav/NavController.h
@@ -56,6 +56,9 @@
                    animated: (BOOL)animated
             discoveryMethod: (ArticleDiscoveryMethod)discoveryMethod;
 
+-(void) promptFirstTimeZeroOnWithMessageIfAppropriate:(NSString *) message;
+-(void) promptFirstTimeZeroOffIfAppropriate;
+
 @end
 
 //TODO: maybe use currentNavBarTextFieldText instead of currentSearchString?
diff --git a/wikipedia/View Controllers/TopNav/NavController.m b/wikipedia/View 
Controllers/TopNav/NavController.m
index ceaf1a5..eaa252a 100644
--- a/wikipedia/View Controllers/TopNav/NavController.m
+++ b/wikipedia/View Controllers/TopNav/NavController.m
@@ -52,6 +52,7 @@
 @property (strong, nonatomic) NSDictionary *navBarSubViewMetrics;
 
 @property (nonatomic) BOOL isTransitioningBetweenViewControllers;
+@property (strong, nonatomic) NSString *wikipediaZeroLearnMoreExternalUrl;
 
 @end
 
@@ -802,4 +803,47 @@
     return editVC ? YES : NO;
 }
 
+#pragma Wikipedia Zero alert dialogs
+
+// Don't call this directly. Use promptFirstTimeZeroOnWithMessageIfAppropriate 
or promptFirstTimeZeroOffIfAppropriate
+-(void) promptZeroOnOrOff:(NSString *) message
+{
+    self.wikipediaZeroLearnMoreExternalUrl = 
MWLocalizedString(@"zero-webpage-url", nil);
+    UIAlertView *dialog = [[UIAlertView alloc]
+                           initWithTitle: (message ? message : 
MWLocalizedString(@"zero-charged-verbiage", nil))
+                           message:MWLocalizedString(@"zero-learn-more", nil)
+                           delegate:self
+                           
cancelButtonTitle:MWLocalizedString(@"zero-learn-more-no-thanks", nil)
+                           
otherButtonTitles:MWLocalizedString(@"zero-learn-more-learn-more", nil)
+                           , nil];
+    [dialog show];
+}
+
+-(void) promptFirstTimeZeroOnWithMessageIfAppropriate:(NSString *) message {
+    if (![SessionSingleton 
sharedInstance].zeroConfigState.zeroOnDialogShownOnce || ![self 
isTopViewControllerAWebviewController]) {
+        [[SessionSingleton sharedInstance].zeroConfigState 
setZeroOnDialogShownOnce];
+        [self promptZeroOnOrOff:message];
+    }
+}
+
+-(void) promptFirstTimeZeroOffIfAppropriate {
+    if (![SessionSingleton 
sharedInstance].zeroConfigState.zeroOffDialogShownOnce || ![self 
isTopViewControllerAWebviewController]) {
+        [[SessionSingleton sharedInstance].zeroConfigState 
setZeroOffDialogShownOnce];
+        [self promptZeroOnOrOff:nil];
+    }
+}
+
+- (void)alertView:(UIAlertView *)alertView 
clickedButtonAtIndex:(NSInteger)buttonIndex
+{
+    if (1 == buttonIndex) {
+        NSURL *url = [NSURL 
URLWithString:self.wikipediaZeroLearnMoreExternalUrl];
+        [[UIApplication sharedApplication] openURL:url];
+    }
+}
+
+-(BOOL) isTopViewControllerAWebviewController
+{
+    return [[self topViewController] isMemberOfClass:[WebViewController 
class]];
+}
+
 @end
diff --git a/wikipedia/View Controllers/WebView/WebViewController.m 
b/wikipedia/View Controllers/WebView/WebViewController.m
index e93ad9c..2ebe7b9 100644
--- a/wikipedia/View Controllers/WebView/WebViewController.m
+++ b/wikipedia/View Controllers/WebView/WebViewController.m
@@ -32,6 +32,7 @@
 #import "Section+ImageRecords.h"
 #import "NSString+Extras.h"
 
+#import "ZeroStatusLabel.h"
 //#import "UIView+Debugging.h"
 
 #define TOC_TOGGLE_ANIMATION_DURATION 0.3f
@@ -81,6 +82,8 @@
 - (IBAction)backButtonPushed:(id)sender;
 - (IBAction)forwardButtonPushed:(id)sender;
 - (IBAction)languageButtonPushed:(id)sender;
+
+@property (strong, nonatomic) IBOutlet ZeroStatusLabel *zeroStatusLabel;
 
 @end
 
@@ -802,6 +805,9 @@
 {
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
+    
+    // Do not remove the following commented toggle. It's for testing W0 stuff.
+    // [[SessionSingleton sharedInstance].zeroConfigState toggleFakeZeroOn];
 }
 
 -(NSString *)cleanTitle:(NSString *)title
@@ -1351,15 +1357,14 @@
                  
                      NavBarTextField *textField = [NAV 
getNavBarItem:NAVBAR_TEXT_FIELD];
                      textField.placeholder = 
MWLocalizedString(@"search-field-placeholder-text-zero", nil);
-                     
-                     NAV.navBarStyle = NAVBAR_STYLE_NIGHT;
-                     
+
+                     self.zeroStatusLabel.text = message;
+                     self.zeroStatusLabel.paddingEdgeInsets = 
UIEdgeInsetsMake(3, 10, 3, 10);
+                     self.zeroStatusLabel.backgroundColor = [UIColor 
colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.93];
+
                      [self showAlert:message];
-                     [self 
promptFirstTimeZeroOnWithMessageIfAppropriate:message];
+                     [NAV 
promptFirstTimeZeroOnWithMessageIfAppropriate:message];
                  });
-                 
-                 // [self showHTMLAlert:message bannerImage:nil bannerColor:
-                 // [UIColor colorWithWhite:0.0 alpha:1.0]];
              }
          } cancelledBlock:^(NSError *errorCancel) {
              NSLog(@"error w0 cancel");
@@ -1373,10 +1378,18 @@
     
         NavBarTextField *textField = [NAV getNavBarItem:NAVBAR_TEXT_FIELD];
         textField.placeholder = 
MWLocalizedString(@"search-field-placeholder-text", nil);
+        NSString *warnVerbiage = MWLocalizedString(@"zero-charged-verbiage", 
nil);
 
-        NAV.navBarStyle = NAVBAR_STYLE_DAY;
-        [self showAlert:MWLocalizedString(@"zero-charged-verbiage", nil)];
-        [self promptFirstTimeZeroOffIfAppropriate];
+        self.zeroStatusLabel.text = warnVerbiage;
+        self.zeroStatusLabel.backgroundColor = [UIColor redColor];
+        
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * 
NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            self.zeroStatusLabel.text = @"";
+            self.zeroStatusLabel.paddingEdgeInsets = UIEdgeInsetsZero;
+        });
+
+        [self showAlert:warnVerbiage];
+        [NAV promptFirstTimeZeroOffIfAppropriate];
     }
 }
 
@@ -1385,34 +1398,6 @@
     if (1 == buttonIndex) {
         NSURL *url = [NSURL URLWithString:self.externalUrl];
         [[UIApplication sharedApplication] openURL:url];
-    }
-}
-
-// Don't call this directly. Use promptFirstTimeZeroOnWithMessageIfAppropriate 
or promptFirstTimeZeroOffIfAppropriate
--(void) promptFirstTimeZeroOnOrOff:(NSString *) message
-{
-    self.externalUrl = MWLocalizedString(@"zero-webpage-url", nil);
-    UIAlertView *dialog = [[UIAlertView alloc]
-                           initWithTitle: (message ? message : 
MWLocalizedString(@"zero-charged-verbiage", nil))
-                           message:MWLocalizedString(@"zero-learn-more", nil)
-                           delegate:self
-                           
cancelButtonTitle:MWLocalizedString(@"zero-learn-more-no-thanks", nil)
-                           
otherButtonTitles:MWLocalizedString(@"zero-learn-more-learn-more", nil)
-                           , nil];
-    [dialog show];
-}
-
--(void) promptFirstTimeZeroOnWithMessageIfAppropriate:(NSString *) message {
-    if (![SessionSingleton 
sharedInstance].zeroConfigState.zeroOnDialogShownOnce) {
-        [[SessionSingleton sharedInstance].zeroConfigState 
setZeroOnDialogShownOnce];
-        [self promptFirstTimeZeroOnOrOff:message];
-    }
-}
-
--(void) promptFirstTimeZeroOffIfAppropriate {
-    if (![SessionSingleton 
sharedInstance].zeroConfigState.zeroOffDialogShownOnce) {
-        [[SessionSingleton sharedInstance].zeroConfigState 
setZeroOffDialogShownOnce];
-        [self promptFirstTimeZeroOnOrOff:nil];
     }
 }
 
diff --git a/wikipedia/View Controllers/WebView/ZeroStatusLabel.h 
b/wikipedia/View Controllers/WebView/ZeroStatusLabel.h
new file mode 100644
index 0000000..8a34556
--- /dev/null
+++ b/wikipedia/View Controllers/WebView/ZeroStatusLabel.h
@@ -0,0 +1,10 @@
+//  Created by Monte Hurd on 12/9/13.
+//  Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface ZeroStatusLabel : UILabel
+
+@property (nonatomic) UIEdgeInsets paddingEdgeInsets;
+
+@end
diff --git a/wikipedia/View Controllers/WebView/ZeroStatusLabel.m 
b/wikipedia/View Controllers/WebView/ZeroStatusLabel.m
new file mode 100644
index 0000000..4a4755c
--- /dev/null
+++ b/wikipedia/View Controllers/WebView/ZeroStatusLabel.m
@@ -0,0 +1,35 @@
+//  Created by Monte Hurd on 4/14/14.
+//  Copyright (c) 2014 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "ZeroStatusLabel.h"
+
+@implementation ZeroStatusLabel
+
+- (id)init
+{
+    self = [super init];
+    if (self) {
+
+        self.paddingEdgeInsets = UIEdgeInsetsZero;
+    }
+    return self;
+}
+
+
+// Label padding edge insets! From: http://stackoverflow.com/a/21934948
+
+-(void)drawTextInRect:(CGRect)rect {
+    return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, 
self.paddingEdgeInsets)];
+}
+
+-(CGSize)intrinsicContentSize
+{
+    UIEdgeInsets insets = self.paddingEdgeInsets;
+    self.preferredMaxLayoutWidth = self.bounds.size.width - (insets.left + 
insets.right);
+    CGSize contentSize = [super intrinsicContentSize];
+    contentSize.height += insets.top + insets.bottom;
+    contentSize.width += insets.left + insets.right;
+    return contentSize;
+}
+
+@end
diff --git a/wikipedia/Web Image Interception/URLCache.m b/wikipedia/Web Image 
Interception/URLCache.m
index 5b3223d..9148ace 100644
--- a/wikipedia/Web Image Interception/URLCache.m
+++ b/wikipedia/Web Image Interception/URLCache.m
@@ -181,6 +181,16 @@
     NSString *xcs = [SessionSingleton 
sharedInstance].zeroConfigState.partnerXcs;
     BOOL zeroProviderChanged = zeroRatedHeaderPresent && ![xZeroRatedHeader 
isEqualToString:xcs];
     BOOL zeroDisposition = [SessionSingleton 
sharedInstance].zeroConfigState.disposition;
+    
+    // For testing Wikipedia Zero visual flourishes.
+    // Go to WebViewController.m and uncomment the W0 part,
+    // then when running the app in the simulator fire the
+    // memory warning to toggle the fake state on or off.
+    if ([SessionSingleton sharedInstance].zeroConfigState.fakeZeroOn) {
+        zeroRatedHeaderPresent = YES;
+        xZeroRatedHeader = @"000-00";
+    }
+    
     if (zeroRatedHeaderPresent && (!zeroDisposition || zeroProviderChanged)) {
         [SessionSingleton sharedInstance].zeroConfigState.disposition = YES;
         [SessionSingleton sharedInstance].zeroConfigState.partnerXcs = 
xZeroRatedHeader;
diff --git a/wikipedia/Zero/ZeroConfigState.h b/wikipedia/Zero/ZeroConfigState.h
index 237433e..3df69c4 100644
--- a/wikipedia/Zero/ZeroConfigState.h
+++ b/wikipedia/Zero/ZeroConfigState.h
@@ -10,9 +10,11 @@
 @property (nonatomic, readonly) BOOL zeroOnDialogShownOnce;
 @property (nonatomic, readonly) BOOL zeroOffDialogShownOnce;
 @property (nonatomic, readonly) BOOL warnWhenLeaving;
+@property (nonatomic, readonly) BOOL fakeZeroOn;
 
 -(void)setZeroOnDialogShownOnce;
 -(void)setZeroOffDialogShownOnce;
 -(void)toggleWarnWhenLeaving;
+-(void)toggleFakeZeroOn;
 
 @end
diff --git a/wikipedia/Zero/ZeroConfigState.m b/wikipedia/Zero/ZeroConfigState.m
index 4eb70a3..db979d1 100644
--- a/wikipedia/Zero/ZeroConfigState.m
+++ b/wikipedia/Zero/ZeroConfigState.m
@@ -41,4 +41,16 @@
     return [[NSUserDefaults standardUserDefaults] 
boolForKey:@"ZeroWarnWhenLeaving"];
 }
 
+-(void)toggleFakeZeroOn
+{
+    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool: 
![self fakeZeroOn]]
+                                              forKey:@"FakeZeroOn"];
+    [[NSUserDefaults standardUserDefaults] synchronize];
+}
+
+-(BOOL)fakeZeroOn
+{
+    return [[NSUserDefaults standardUserDefaults] boolForKey:@"FakeZeroOn"];
+}
+
 @end

-- 
To view, visit https://gerrit.wikimedia.org/r/126170
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0a0924af08682fd82398a6d5a827a589811f0122
Gerrit-PatchSet: 2
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dr0ptp4kt <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Mhurd <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to