Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
coopwire-hypothesis
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
孙灵跃 Leon Sun
coopwire-hypothesis
Commits
2440b74f
Commit
2440b74f
authored
Oct 23, 2013
by
Randall Leeds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update other angular libs
parent
b292384d
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
163 additions
and
144 deletions
+163
-144
angular-resource.js
h/lib/angular-resource.js
+108
-80
angular-sanitize.js
h/lib/angular-sanitize.js
+55
-64
No files found.
h/lib/angular-resource.js
View file @
2440b74f
This diff is collapsed.
Click to expand it.
h/lib/angular-sanitize.js
View file @
2440b74f
/**
* @license AngularJS v1.
1.4
* @license AngularJS v1.
2.0-rc.2
* (c) 2010-2012 Google, Inc. http://angularjs.org
* License: MIT
*/
(
function
(
window
,
angular
,
undefined
)
{
'use strict'
;
(
function
(
window
,
angular
,
undefined
)
{
'use strict'
;
var
$sanitizeMinErr
=
angular
.
$$minErr
(
'$sanitize'
);
/**
* @ngdoc overview
* @name ngSanitize
* @description
*
* # ngSanitize
*
* The `ngSanitize` module provides functionality to sanitize HTML.
*
* {@installModule sanitize}
*
* See {@link ngSanitize.$sanitize `$sanitize`} for usage.
*/
/*
...
...
@@ -48,68 +57,71 @@
<doc:example module="ngSanitize">
<doc:source>
<script>
function Ctrl($scope) {
function Ctrl($scope
, $sce
) {
$scope.snippet =
'<p style="color:blue">an html\n' +
'<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
'snippet</p>';
$scope.deliberatelyTrustDangerousSnippet = function() {
return $sce.trustAsHtml($scope.snippet);
};
}
</script>
<div ng-controller="Ctrl">
Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
<table>
<tr>
<td>Filter</td>
<td>Directive</td>
<td>How</td>
<td>Source</td>
<td>Rendered</td>
</tr>
<tr id="html-filter">
<td>html filter</td>
<td>
<pre><div ng-bind-html="snippet"><br/></div></pre>
</td>
<td>
<div ng-bind-html="snippet"></div>
</td>
<tr id="bind-html-with-sanitize">
<td>ng-bind-html</td>
<td>Automatically uses $sanitize</td>
<td><pre><div ng-bind-html="snippet"><br/></div></pre></td>
<td><div ng-bind-html="snippet"></div></td>
</tr>
<tr id="bind-html-with-trust">
<td>ng-bind-html</td>
<td>Bypass $sanitize by explicitly trusting the dangerous value</td>
<td><pre><div ng-bind-html="deliberatelyTrustDangerousSnippet()"><br/></div></pre></td>
<td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
</tr>
<tr id="escaped-html">
<td>no filter</td>
<tr id="bind-default">
<td>ng-bind</td>
<td>Automatically escapes</td>
<td><pre><div ng-bind="snippet"><br/></div></pre></td>
<td><div ng-bind="snippet"></div></td>
</tr>
<tr id="html-unsafe-filter">
<td>unsafe html filter</td>
<td><pre><div ng-bind-html-unsafe="snippet"><br/></div></pre></td>
<td><div ng-bind-html-unsafe="snippet"></div></td>
</tr>
</table>
</div>
</doc:source>
<doc:scenario>
it('should sanitize the html snippet ', function() {
expect(using('#
html-filter
').element('div').html()).
it('should sanitize the html snippet
by default
', function() {
expect(using('#
bind-html-with-sanitize
').element('div').html()).
toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
});
it('should inline raw snippet if bound to a trusted value', function() {
expect(using('#bind-html-with-trust').element("div").html()).
toBe("<p style=\"color:blue\">an html\n" +
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
"snippet</p>");
});
it('should escape snippet without any filter', function() {
expect(using('#
escaped-html
').element('div').html()).
expect(using('#
bind-default
').element('div').html()).
toBe("<p style=\"color:blue\">an html\n" +
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
"snippet</p>");
});
it('should inline raw snippet if filtered as unsafe', function() {
expect(using('#html-unsafe-filter').element("div").html()).
toBe("<p style=\"color:blue\">an html\n" +
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
"snippet</p>");
});
it('should update', function() {
input('snippet').enter('new <b>text</b>');
expect(using('#
html-filter').binding('snippet'
)).toBe('new <b>text</b>');
expect(using('#
escaped-html').element('div').html()).toBe("new <b>text</b>"
);
expect(using('#
html-unsafe-filter').binding("snippet")).toBe('new <b>text</b>'
);
input('snippet').enter('new <b
onclick="alert(1)"
>text</b>');
expect(using('#
bind-html-with-sanitize').element('div').html(
)).toBe('new <b>text</b>');
expect(using('#
bind-html-with-trust').element('div').html()).toBe('new <b onclick="alert(1)">text</b>'
);
expect(using('#
bind-default').element('div').html()).toBe("new <b onclick=\"alert(1)\">text</b>"
);
});
</doc:scenario>
</doc:example>
...
...
@@ -129,7 +141,7 @@ var START_TAG_REGEXP = /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:
BEGING_END_TAGE_REGEXP
=
/^<
\s
*
\/
/
,
COMMENT_REGEXP
=
/<!--
(
.*
?)
-->/g
,
CDATA_REGEXP
=
/<!
\[
CDATA
\[(
.*
?)
]]>/g
,
URI_REGEXP
=
/^
((
ftp|https
?)
:
\/\/
|mailto:|tel:|#
)
/
,
URI_REGEXP
=
/^
((
ftp|https
?)
:
\/\/
|mailto:|tel:|#
)
/
i
,
NON_ALPHANUMERIC_REGEXP
=
/
([^\#
-~| |!
])
/g
;
// Match everything outside of normal chars and " (quote character)
...
...
@@ -256,7 +268,7 @@ function htmlParser( html, handler ) {
}
if
(
html
==
last
)
{
throw
"Parse Error: "
+
html
;
throw
$sanitizeMinErr
(
'badparse'
,
"The sanitizer was unable to parse the following block of html: {0}"
,
html
)
;
}
last
=
html
;
}
...
...
@@ -283,10 +295,10 @@ function htmlParser( html, handler ) {
var
attrs
=
{};
rest
.
replace
(
ATTR_REGEXP
,
function
(
match
,
name
,
doubleQuotedValue
,
singleQ
outedValue
,
unqou
tedValue
)
{
rest
.
replace
(
ATTR_REGEXP
,
function
(
match
,
name
,
doubleQuotedValue
,
singleQ
uotedValue
,
unquo
tedValue
)
{
var
value
=
doubleQuotedValue
||
singleQ
ou
tedValue
||
unq
ou
tedValue
||
singleQ
uo
tedValue
||
unq
uo
tedValue
||
''
;
attrs
[
name
]
=
decodeEntities
(
value
);
...
...
@@ -400,37 +412,16 @@ function htmlSanitizeWriter(buf){
// define ngSanitize module and register $sanitize service
angular
.
module
(
'ngSanitize'
,
[]).
value
(
'$sanitize'
,
$sanitize
);
/**
* @ngdoc directive
* @name ngSanitize.directive:ngBindHtml
*
* @description
* Creates a binding that will sanitize the result of evaluating the `expression` with the
* {@link ngSanitize.$sanitize $sanitize} service and innerHTML the result into the current element.
*
* See {@link ngSanitize.$sanitize $sanitize} docs for examples.
*
* @element ANY
* @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
*/
angular
.
module
(
'ngSanitize'
).
directive
(
'ngBindHtml'
,
[
'$sanitize'
,
function
(
$sanitize
)
{
return
function
(
scope
,
element
,
attr
)
{
element
.
addClass
(
'ng-binding'
).
data
(
'$binding'
,
attr
.
ngBindHtml
);
scope
.
$watch
(
attr
.
ngBindHtml
,
function
ngBindHtmlWatchAction
(
value
)
{
value
=
$sanitize
(
value
);
element
.
html
(
value
||
''
);
});
};
}]);
/**
* @ngdoc filter
* @name ngSanitize.filter:linky
* @function
*
* @description
* Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
* plain email address links.
* Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
* plain email address links.
*
* Requires the {@link ngSanitize `ngSanitize`} module to be installed.
*
* @param {string} text Input text.
* @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment