Pārlūkot izejas kodu

Move js.Storage's static helpers into Browser.

Bruno Garcia 13 gadi atpakaļ
vecāks
revīzija
4f6edce12a
2 mainītis faili ar 31 papildinājumiem un 56 dzēšanām
  1. 31 0
      std/js/Browser.hx
  2. 0 56
      std/js/Storage.hx

+ 31 - 0
std/js/Browser.hx

@@ -21,6 +21,7 @@
  */
 package js;
 
+import js.html.Storage;
 import js.html.XMLHttpRequest;
 
 class Browser {
@@ -30,6 +31,36 @@ class Browser {
 	public static var location(default,null) : js.html.Location = untyped __js__("typeof window != \"undefined\" ? window.location : null");
 	public static var navigator(default,null) : js.html.Navigator = untyped __js__("typeof window != \"undefined\" ? window.navigator : null");
 
+	/**
+	 * Safely gets the browser's local storage, or returns null if localStorage is unsupported or
+	 * disabled.
+	 */
+	public static function getLocalStorage() : Storage
+	{
+		try {
+			var s = window.localStorage;
+			s.getItem("");
+			return s;
+		} catch( e : Dynamic ) {
+			return null;
+		}
+	}
+
+	/**
+	 * Safely gets the browser's session storage, or returns null if sessionStorage is unsupported
+	 * or disabled.
+	 */
+	public static function getSessionStorage() : Storage
+	{
+		try {
+			var s = window.sessionStorage;
+			s.getItem("");
+			return s;
+		} catch( e : Dynamic ) {
+			return null;
+		}
+	}
+
 	/**
 	 * Creates an XMLHttpRequest, with a fallback to ActiveXObject for ancient versions of Internet
 	 * Explorer.

+ 0 - 56
std/js/Storage.hx

@@ -1,56 +0,0 @@
-/*
- * Copyright (C)2005-2012 Haxe Foundation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-package js;
-
-extern class Storage {
-
-	public function getItem( key : String ) : String;
-	public function setItem( key : String, v : String ) : Void;
-	public function removeItem( key : String ) : Void;
-	public function clear() : Void;
-
-	public var length(default,null) : Int;
-	public function key( index : Int ) : String;
-
-	public static inline function getLocal() : Storage {
-		var s : Storage;
-		try {
-			s = untyped window['localStorage'];
-			s.getItem('');
-		} catch( e : Dynamic ) {
-			s = null;
-		}
-		return s;
-	}
-
-	public static inline function getSession() : Storage {
-		var s : Storage;
-		try {
-			s = untyped window['sessionStorage'];
-			s.getItem('');
-		} catch( e : Dynamic ) {
-			s = null;
-		}
-		return s;
-	}
-
-}