Skip to content

Commit bec2ba2

Browse files
jbedardmgol
authored andcommitted
Data: Don't expose jQuery.acceptData
jQuery.acceptData is an undocumented internal API that shouldn't be exposed. (cherry-picked from 2242719) Fixes gh-2555
1 parent eac265c commit bec2ba2

File tree

5 files changed

+33
-51
lines changed

5 files changed

+33
-51
lines changed

src/data.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ define( [
22
"./core",
33
"./var/deletedIds",
44
"./data/support",
5-
"./data/accepts"
6-
], function( jQuery, deletedIds, support ) {
5+
"./data/var/acceptData"
6+
], function( jQuery, deletedIds, support, acceptData ) {
77

88
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
99
rmultiDash = /([A-Z])/g;
@@ -59,7 +59,7 @@ function isEmptyDataObject( obj ) {
5959
}
6060

6161
function internalData( elem, key, data, pvt /* Internal Use Only */ ) {
62-
if ( !jQuery.acceptData( elem ) ) {
62+
if ( !acceptData( elem ) ) {
6363
return;
6464
}
6565

@@ -140,7 +140,7 @@ function internalData( elem, key, data, pvt /* Internal Use Only */ ) {
140140
}
141141

142142
function internalRemoveData( elem, key, pvt ) {
143-
if ( !jQuery.acceptData( elem ) ) {
143+
if ( !acceptData( elem ) ) {
144144
return;
145145
}
146146

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
define( [
2-
"../core"
3-
], function( jQuery ) {
1+
define( function() {
42

53
/**
64
* Determines whether an object can have data
75
*/
8-
jQuery.acceptData = function( elem ) {
6+
return function( elem ) {
97
var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ],
108
nodeType = +elem.nodeType || 1;
119

@@ -17,5 +15,4 @@ jQuery.acceptData = function( elem ) {
1715
!noData || noData !== true && elem.getAttribute( "classid" ) === noData;
1816
};
1917

20-
return jQuery.acceptData;
2118
} );

src/event.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ define( [
55
"./var/hasOwn",
66
"./var/slice",
77
"./event/support",
8+
"./data/var/acceptData",
89

910
"./core/init",
1011
"./data",
1112
"./selector"
12-
], function( jQuery, document, rnotwhite, hasOwn, slice, support ) {
13+
], function( jQuery, document, rnotwhite, hasOwn, slice, support, acceptData ) {
1314

1415
var rformElems = /^(?:input|select|textarea)$/i,
1516
rkeyEvent = /^key/,
@@ -391,7 +392,7 @@ jQuery.event = {
391392

392393
// Native handler
393394
handle = ontype && cur[ ontype ];
394-
if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
395+
if ( handle && handle.apply && acceptData( cur ) ) {
395396
event.result = handle.apply( cur, data );
396397
if ( event.result === false ) {
397398
event.preventDefault();
@@ -406,7 +407,7 @@ jQuery.event = {
406407
if (
407408
( !special._default ||
408409
special._default.apply( eventPath.pop(), data ) === false
409-
) && jQuery.acceptData( elem )
410+
) && acceptData( elem )
410411
) {
411412

412413
// Call a native DOM method on the target with the same name name as the event.

src/manipulation.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ define( [
1717
"./manipulation/setGlobalEval",
1818
"./manipulation/buildFragment",
1919
"./manipulation/support",
20+
"./data/var/acceptData",
2021

2122
"./core/init",
22-
"./data/accepts",
2323
"./traversing",
2424
"./selector",
2525
"./event"
2626
], function( jQuery, document, concat, push, deletedIds, access,
2727
rcheckableType, rtagName, rscriptType, rleadingWhitespace, nodeNames,
2828
createSafeFragment, wrapMap, getAll, setGlobalEval,
29-
buildFragment, support ) {
29+
buildFragment, support, acceptData ) {
3030

3131
var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
3232
rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ),
@@ -322,7 +322,7 @@ jQuery.extend( {
322322
return clone;
323323
},
324324

325-
cleanData: function( elems, /* internal */ acceptData ) {
325+
cleanData: function( elems, /* internal */ forceAcceptData ) {
326326
var elem, type, id, data,
327327
i = 0,
328328
internalKey = jQuery.expando,
@@ -331,7 +331,7 @@ jQuery.extend( {
331331
special = jQuery.event.special;
332332

333333
for ( ; ( elem = elems[ i ] ) != null; i++ ) {
334-
if ( acceptData || jQuery.acceptData( elem ) ) {
334+
if ( forceAcceptData || acceptData( elem ) ) {
335335

336336
id = elem[ internalKey ];
337337
data = id && cache[ id ];

test/unit/data.js

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -224,52 +224,36 @@ QUnit.test( "Data is not being set on comment and text nodes", function( assert
224224

225225
} );
226226

227-
QUnit.test( "jQuery.acceptData", function( assert ) {
227+
QUnit.test( "acceptData", function( assert ) {
228228
assert.expect( 10 );
229229

230-
var flash, pdf;
230+
var flash, pdf, form;
231231

232-
assert.ok(
233-
jQuery.acceptData( document ), "document"
234-
);
235-
assert.ok(
236-
jQuery.acceptData( document.documentElement ), "documentElement"
237-
);
238-
assert.ok(
239-
jQuery.acceptData( {} ), "object"
240-
);
241-
assert.ok(
242-
!jQuery.acceptData( document.createElement( "embed" ) ), "embed"
243-
);
232+
assert.equal( 42, jQuery( document ).data( "test", 42 ).data( "test" ), "document" );
233+
assert.equal( 42, jQuery( document.documentElement ).data( "test", 42 ).data( "test" ), "documentElement" );
234+
assert.equal( 42, jQuery( {} ).data( "test", 42 ).data( "test" ), "object" );
235+
assert.equal( undefined, jQuery( document.createElement( "embed" ) ).data( "test", 42 ).data( "test" ), "embed" );
244236

245237
flash = document.createElement( "object" );
246238
flash.setAttribute( "classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" );
247-
assert.ok(
248-
jQuery.acceptData( flash ), "flash"
249-
);
239+
assert.equal( 42, jQuery( flash ).data( "test", 42 ).data( "test" ), "flash" );
250240

251241
pdf = document.createElement( "object" );
252242
pdf.setAttribute( "classid", "clsid:CA8A9780-280D-11CF-A24D-444553540000" );
253-
assert.ok(
254-
!jQuery.acceptData( pdf ), "pdf"
255-
);
243+
assert.equal( undefined, jQuery( pdf ).data( "test", 42 ).data( "test" ), "pdf" );
256244

257-
assert.ok(
258-
!jQuery.acceptData( document.createComment( "" ) ), "comment"
259-
);
260-
assert.ok(
261-
!jQuery.acceptData( document.createTextNode( "" ) ), "text"
262-
);
263-
assert.ok(
264-
!jQuery.acceptData( document.createDocumentFragment() ), "documentFragment"
265-
);
245+
assert.equal( undefined, jQuery( document.createComment( "" ) ).data( "test", 42 ).data( "test" ), "comment" );
246+
assert.equal( undefined, jQuery( document.createTextNode( "" ) ).data( "test", 42 ).data( "test" ), "text" );
247+
assert.equal( undefined, jQuery( document.createDocumentFragment() ).data( "test", 42 ).data( "test" ), "documentFragment" );
266248

267-
assert.ok(
268-
jQuery.acceptData(
269-
jQuery( "#form" ).append( "<input id='nodeType'/><input id='nodeName'/>" )[ 0 ]
270-
),
271-
"form with aliased DOM properties"
272-
);
249+
form = jQuery( "#form" ).append( "<input id='nodeType'/><input id='nodeName'/>" )[ 0 ];
250+
assert.equal( 42, jQuery( form ) .data( "test", 42 ).data( "test" ), "form with aliased DOM properties" );
251+
252+
// Clean up.
253+
jQuery.removeData( document );
254+
jQuery.removeData( document.documentElement );
255+
jQuery.removeData( flash );
256+
jQuery.removeData( form );
273257
} );
274258

275259
// attempting to access the data of an undefined jQuery element should be undefined

0 commit comments

Comments
 (0)