diff --git a/examples/apis/Linking/LinkingExample.js b/examples/apis/Linking/LinkingExample.js index b8c8c9f9..cd8eb7f8 100644 --- a/examples/apis/Linking/LinkingExample.js +++ b/examples/apis/Linking/LinkingExample.js @@ -2,11 +2,19 @@ import { Linking, StyleSheet, Text, View } from 'react-native' import React, { Component } from 'react'; import { storiesOf, action } from '@kadira/storybook'; +const url = 'https://mathiasbynens.github.io/rel-noopener/malicious.html'; + class LinkingExample extends Component { + handlePress() { + Linking.canOpenURL(url).then((supported) => { + return Linking.openURL(url); + }); + } + render() { return ( - { Linking.openURL('https://mathiasbynens.github.io/rel-noopener/malicious.html'); }} style={styles.text}> + Linking.openURL (Expect: "The previous tab is safe and intact") diff --git a/src/apis/Linking/index.js b/src/apis/Linking/index.js index d7e8ac4a..79b97d24 100644 --- a/src/apis/Linking/index.js +++ b/src/apis/Linking/index.js @@ -1,10 +1,19 @@ const Linking = { addEventListener() {}, removeEventListener() {}, - canOpenURL() { return true; }, - getInitialURL() { return ''; }, + canOpenURL() { + return Promise.resolve(true); + }, + getInitialURL() { + return Promise.resolve(''); + }, openURL(url) { - iframeOpen(url); + try { + iframeOpen(url); + return Promise.resolve(); + } catch (e) { + return Promise.reject(e); + } } };