on develop help sign in
Merge branch 'develop' into ts-hydration
commit9ca083294bccb2d951b17caf3e305f7827ea8132 authorLuigy Leon <luichi.19@gmail.com> dateThu 10 Jan 2019, 15:29 (8 years ago) parent32f4b458e615a8
8 files changed+40−14
reflex-dom-core/default.nix+6−2 reflex-dom-core/reflex-dom-core.cabal+1−1 reflex-dom-core/src/Reflex/Dom/Builder/Class.hs+7−7 reflex-dom-core/src/Reflex/Dom/Core.hs+4 reflex-dom-core/src/Reflex/Dom/Xhr.hs+1−1 reflex-dom-core/test/gc.hs+10−2 reflex-dom/java/org/reflexfrp/reflexdom/MainWidget.java+7−1 reflex-dom/src/Reflex/Dom.hs+4
reflex-dom-core/default.nix+6−2
@@ -8,9 +8,13 @@
88, random, ref-tf, reflex, semigroups, silently, stdenv, stm
99, template-haskell, temporary, text, these, transformers, unix, wai
1010, wai-websockets, warp, webdriver, websockets, zenc
11−, ghc, iproute, chromium, hashable, selenium-server-standalone, which
11+, ghc, iproute, chromium, hashable, selenium-server-standalone, which, fontconfig
1212}:
13−let addGcTestDepends = drv: if stdenv.system != "x86_64-linux" then drv else drv // {
13+let addGcTestDepends = drv: if (stdenv.system != "x86_64-linux" || stdenv.hostPlatform != stdenv.buildPlatform || (ghc.isGhcjs or false)) then drv else drv // {
14+ # The headless browser run as part of gc tests would hang/crash without this
15+ preCheck = ''
16+ export FONTCONFIG_PATH=${fontconfig.out}/etc/fonts
17+ '';
1418 testHaskellDepends = (drv.testHaskellDepends or []) ++ [ temporary jsaddle-warp process linux-namespaces ];
1519 testSystemDepends = (drv.testSystemDepends or []) ++ [ chromium iproute ];
1620 };
reflex-dom-core/reflex-dom-core.cabal+1−1
@@ -212,7 +212,7 @@ test-suite gc
212212 ghc-prof-options: -fprof-auto -optP-DPROFILING
213213 main-is: gc.hs
214214 type: exitcode-stdio-1.0
215− if !os(linux) || !arch(x86_64) || impl(ghc >= 8.4.0)
215+ if !os(linux) || !arch(x86_64)
216216 buildable: False
217217
218218source-repository head
reflex-dom-core/src/Reflex/Dom/Builder/Class.hs+7−7
@@ -436,7 +436,7 @@ concat <$> mapM (uncurry makeLensesWithoutField)
436436#endif
437437
438438-- | This lens is technically illegal. The implementation of 'TextNodeConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'TextNodeConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
439−textNodeConfig_setContents :: Reflex t => Lens (TextNodeConfig t) (TextNodeConfig t) (Event t Text) (Event t Text)
439+textNodeConfig_setContents :: Reflex t => Lens' (TextNodeConfig t) (Event t Text)
440440textNodeConfig_setContents =
441441 let getter = fromMaybe never . _textNodeConfig_setContents
442442 setter t e = t { _textNodeConfig_setContents = Just e }
@@ -450,42 +450,42 @@ commentNodeConfig_setContents =
450450 in lens getter setter
451451
452452-- | This lens is technically illegal. The implementation of 'InputElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'InputElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
453−inputElementConfig_setValue :: Reflex t => Lens (InputElementConfig er t m) (InputElementConfig er t m) (Event t Text) (Event t Text)
453+inputElementConfig_setValue :: Reflex t => Lens' (InputElementConfig er t m) (Event t Text)
454454inputElementConfig_setValue =
455455 let getter = fromMaybe never . _inputElementConfig_setValue
456456 setter t e = t { _inputElementConfig_setValue = Just e }
457457 in lens getter setter
458458
459459-- | This lens is technically illegal. The implementation of 'InputElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'InputElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
460−inputElementConfig_setChecked :: Reflex t => Lens (InputElementConfig er t m) (InputElementConfig er t m) (Event t Bool) (Event t Bool)
460+inputElementConfig_setChecked :: Reflex t => Lens' (InputElementConfig er t m) (Event t Bool)
461461inputElementConfig_setChecked =
462462 let getter = fromMaybe never . _inputElementConfig_setChecked
463463 setter t e = t { _inputElementConfig_setChecked = Just e }
464464 in lens getter setter
465465
466466-- | This lens is technically illegal. The implementation of 'RawElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'RawElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
467−rawElementConfig_modifyAttributes :: Reflex t => Lens (RawElementConfig er t m) (RawElementConfig er t m) (Event t (Map AttributeName (Maybe Text))) (Event t (Map AttributeName (Maybe Text)))
467+rawElementConfig_modifyAttributes :: Reflex t => Lens' (RawElementConfig er t m) (Event t (Map AttributeName (Maybe Text)))
468468rawElementConfig_modifyAttributes =
469469 let getter = fromMaybe never . _rawElementConfig_modifyAttributes
470470 setter t e = t { _rawElementConfig_modifyAttributes = Just e }
471471 in lens getter setter
472472
473473-- | This lens is technically illegal. The implementation of 'RawElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'RawElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
474−elementConfig_modifyAttributes :: Reflex t => Lens (ElementConfig er t m) (ElementConfig er t m) (Event t (Map AttributeName (Maybe Text))) (Event t (Map AttributeName (Maybe Text)))
474+elementConfig_modifyAttributes :: Reflex t => Lens' (ElementConfig er t m) (Event t (Map AttributeName (Maybe Text)))
475475elementConfig_modifyAttributes =
476476 let getter = fromMaybe never . _elementConfig_modifyAttributes
477477 setter t e = t { _elementConfig_modifyAttributes = Just e }
478478 in lens getter setter
479479
480480-- | This lens is technically illegal. The implementation of 'TextAreaElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'TextAreaElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
481−textAreaElementConfig_setValue :: Reflex t => Lens (TextAreaElementConfig er t m) (TextAreaElementConfig er t m) (Event t Text) (Event t Text)
481+textAreaElementConfig_setValue :: Reflex t => Lens' (TextAreaElementConfig er t m) (Event t Text)
482482textAreaElementConfig_setValue =
483483 let getter = fromMaybe never . _textAreaElementConfig_setValue
484484 setter t e = t { _textAreaElementConfig_setValue = Just e }
485485 in lens getter setter
486486
487487-- | This lens is technically illegal. The implementation of 'SelectElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'SelectElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
488−selectElementConfig_setValue :: Reflex t => Lens (SelectElementConfig er t m) (SelectElementConfig er t m) (Event t Text) (Event t Text)
488+selectElementConfig_setValue :: Reflex t => Lens' (SelectElementConfig er t m) (Event t Text)
489489selectElementConfig_setValue =
490490 let getter = fromMaybe never . _selectElementConfig_setValue
491491 setter t e = t { _selectElementConfig_setValue = Just e }
reflex-dom-core/src/Reflex/Dom/Core.hs+4
@@ -1,3 +1,7 @@
1+-- Disable haddocks on this module due to a bug on haddocks when selectively
2+-- reexporting on ghc > 8.2.
3+-- https://github.com/haskell/haddock/issues/979
4+{-# OPTIONS_HADDOCK hide, prune, ignore-exports #-}
15module Reflex.Dom.Core (module X) where
26
37import Reflex as X hiding (askEvents)
reflex-dom-core/src/Reflex/Dom/Xhr.hs+1−1
@@ -215,7 +215,7 @@ _xhrResponse_body :: XhrResponse -> Maybe Text
215215_xhrResponse_body = _xhrResponse_responseText
216216
217217{-# DEPRECATED xhrResponse_body "Use xhrResponse_response or xhrResponse_responseText instead." #-}
218−xhrResponse_body :: Lens XhrResponse XhrResponse (Maybe Text) (Maybe Text)
218+xhrResponse_body :: Lens' XhrResponse (Maybe Text)
219219xhrResponse_body = lens _xhrResponse_responseText (\r t -> r { _xhrResponse_responseText = t })
220220
221221instance a ~ () => Default (XhrRequestConfig a) where
reflex-dom-core/test/gc.hs+10−2
@@ -8,7 +8,6 @@ import Control.Exception
88import Control.Monad
99import Control.Monad.IO.Class
1010import Data.Int
11−import GHC.Stats
1211import Language.Javascript.JSaddle.Warp
1312import Reflex.Dom.Core
1413import Reflex.Time
@@ -19,6 +18,15 @@ import System.Mem
1918import System.Posix
2019import System.Process
2120
21+#if MIN_VERSION_base(4,11,0)
22+import GHC.Stats (getRTSStatsEnabled, getRTSStats, RTSStats(..), gcdetails_live_bytes, gc)
23+currentBytesUsed :: RTSStats -> Int64
24+currentBytesUsed = fromIntegral . gcdetails_live_bytes . gc
25+#else
26+import GHC.Stats (getGCStats, GCStats(..))
27+getRTSStats = getGCStats
28+#endif
29+
2230-- In initial testing, the minimum live bytes count was 233128 and maximum was
2331-- 363712. Going over the maximum means the test has actually failed - we
2432-- probably have a memory leak; going under the minimum doesn't indicate a
@@ -63,7 +71,7 @@ main = do
6371 let f (!failures, !n) = liftIO $ if n < 3000
6472 then do performMajorGC
6573 threadDelay 5000 -- Wait a bit to allow requestAnimationFrame to call its callback sometimes; this value was experimentally determined
66− gcStats <- getGCStats
74+ gcStats <- getRTSStats
6775 print $ currentBytesUsed gcStats
6876 when (currentBytesUsed gcStats < minBytesAllowed) $ do
6977 putStrLn "FAILED: currentBytesUsed < minBytesAllowed"
reflex-dom/java/org/reflexfrp/reflexdom/MainWidget.java+7−1
@@ -21,6 +21,7 @@ import android.graphics.Bitmap;
2121import java.io.IOException;
2222import java.io.InputStream;
2323import android.content.Intent;
24+import android.content.ActivityNotFoundException;
2425
2526import java.nio.charset.StandardCharsets;
2627
@@ -79,7 +80,12 @@ public class MainWidget {
7980 @Override
8081 public boolean shouldOverrideUrlLoading(WebView view, String url) {
8182 if( url != null && !url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("file://")) {
82− view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
83+ try {
84+ view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
85+ }
86+ catch(ActivityNotFoundException e) {
87+ Log.e("reflex", "Starting activity for intent '" + url + "' failed!");
88+ }
8389 return true;
8490 } else {
8591 return false;
reflex-dom/src/Reflex/Dom.hs+4
@@ -1,3 +1,7 @@
1+-- Disable haddocks on this module due to a bug on haddocks when selectively
2+-- reexporting on ghc > 8.2.
3+-- https://github.com/haskell/haddock/issues/979
4+{-# OPTIONS_HADDOCK hide, prune, ignore-exports #-}
15module Reflex.Dom (module X) where
26
37import Foreign.JavaScript.Orphans ()