Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: LayoutTests/fast/workers/storage/resources/test-authorizer-sync.js

Issue 561093003: Remove worker support of Web SQL Database. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 function cleanup(db)
2 {
3 db.transaction(function(tx) {
4 tx.executeSql("DROP TABLE IF EXISTS Test");
5 tx.executeSql("DROP INDEX IF EXISTS TestIndex");
6 tx.executeSql("DROP VIEW IF EXISTS TestView");
7 tx.executeSql("DROP TRIGGER IF EXISTS TestTrigger");
8 });
9 }
10
11 function executeStatement(tx, statement, operation)
12 {
13 try {
14 tx.executeSql(statement);
15 postMessage(operation + " allowed.");
16 } catch (err) {
17 postMessage(operation + " not allowed: " + err + " (" + err.code + ")");
18 }
19 }
20
21 function createTableCallback(tx)
22 {
23 executeStatement(tx, "CREATE TABLE Test (Foo int)", "SQLITE_CREATE_TABLE");
24 }
25
26 function createStatementsCallback(tx)
27 {
28 executeStatement(tx, "CREATE INDEX TestIndex ON Test (Foo)", "SQLITE_CREATE_ INDEX");
29
30 // Even though the following query should trigger a SQLITE_CREATE_TEMP_INDEX operation
31 // (according to http://www.sqlite.org/tempfiles.html), it doesn't, and I'm not aware
32 // of any other way to trigger this operation. So we'll skip it for now.
33 //executeStatement(tx, "SELECT * FROM Test WHERE Foo IN (1, 2, 3)", "SQLITE_ CREATE_TEMP_INDEX");
34
35 executeStatement(tx, "CREATE TEMP TABLE TestTempTable (Foo int)", "SQLITE_CR EATE_TEMP_TABLE");
36 executeStatement(tx, "CREATE TEMP TRIGGER TestTempTrigger INSERT ON Test BEG IN SELECT COUNT(*) FROM Test; END", "SQLITE_CREATE_TEMP_TRIGGER");
37 executeStatement(tx, "CREATE TEMP VIEW TestTempView AS SELECT COUNT(*) FROM Test", "SQLITE_CREATE_TEMP_VIEW");
38 executeStatement(tx, "CREATE TRIGGER TestTrigger INSERT ON Test BEGIN SELECT COUNT(*) FROM Test; END", "SQLITE_CREATE_TRIGGER");
39 executeStatement(tx, "CREATE VIEW TestView AS SELECT COUNT(*) FROM Test", "S QLITE_CREATE_VIEW");
40
41 // We should try to create a virtual table using fts3, when WebKit's sqlite library supports it.
42 executeStatement(tx, "CREATE VIRTUAL TABLE TestVirtualTable USING Unsupporte dModule", "SQLITE_CREATE_VTABLE");
43 }
44
45 function otherStatementsCallback(tx)
46 {
47 executeStatement(tx, "SELECT COUNT(*) FROM Test", "SQLITE_READ");
48 executeStatement(tx, "SELECT COUNT(*) FROM Test", "SQLITE_SELECT");
49 executeStatement(tx, "DELETE FROM Test", "SQLITE_DELETE");
50 executeStatement(tx, "INSERT INTO Test VALUES (1)", "SQLITE_INSERT");
51 executeStatement(tx, "UPDATE Test SET Foo = 2 WHERE Foo = 1", "SQLITE_UPDATE ");
52 executeStatement(tx, "PRAGMA cache_size", "SQLITE_PRAGMA");
53
54 executeStatement(tx, "ALTER TABLE Test RENAME TO TestTable", "SQLITE_ALTER_T ABLE");
55 // Rename the table back to its original name
56 executeStatement(tx, "ALTER TABLE TestTable RENAME To Test", "SQLITE_ALTER_T ABLE");
57
58 executeStatement(tx, "BEGIN TRANSACTION", "SQLITE_TRANSACTION");
59 executeStatement(tx, "ATTACH main AS TestMain", "SQLITE_ATTACH");
60 executeStatement(tx, "DETACH TestMain", "SQLITE_DETACH");
61 executeStatement(tx, "REINDEX", "SQLITE_REINDEX");
62 executeStatement(tx, "ANALYZE", "SQLITE_ANALYZE");
63
64 // SQLITE_FUNCTION: allowed in write mode
65 // There is no SQL/Javascript API to add user-defined functions to SQLite,
66 // so we cannot test this operation
67 }
68
69 function dropStatementsCallback(tx)
70 {
71 executeStatement(tx, "DROP INDEX TestIndex", "SQLITE_DROP_INDEX");
72
73 // SQLITE_DROP_TEMP_INDEX: allowed in write mode
74 // Not sure how to test this: temp indexes are automatically dropped when
75 // the database is closed, but HTML5 doesn't specify a closeDatabase() call.
76
77 executeStatement(tx, "DROP TABLE TestTempTable", "SQLITE_DROP_TEMP_TABLE");
78 executeStatement(tx, "DROP TRIGGER TestTempTrigger", "SQLITE_DROP_TEMP_TRIGG ER");
79 executeStatement(tx, "DROP VIEW TestTempView", "SQLITE_DROP_TEMP_VIEW");
80 executeStatement(tx, "DROP TRIGGER TestTrigger", "SQLITE_DROP_TRIGGER");
81 executeStatement(tx, "DROP VIEW TestView", "SQLITE_DROP_VIEW");
82
83 // SQLITE_DROP_VTABLE: allowed in write mode
84 // Not sure how to test this: we cannot create a virtual table because we do not
85 // have SQL/Javascript APIs to register a module that implements a virtual t able.
86 // Therefore, trying to drop a virtual table will always fail (no such table )
87 // before even getting to the authorizer.
88
89 executeStatement(tx, "DROP TABLE Test", "SQLITE_DROP_TABLE");
90 }
91
92 function testReadWriteMode(db)
93 {
94 db.transaction(function(tx) {
95 postMessage("Beginning write transaction:");
96 createTableCallback(tx);
97 createStatementsCallback(tx);
98 otherStatementsCallback(tx);
99 dropStatementsCallback(tx);
100 postMessage("Write transaction succeeded.\n");
101 });
102 }
103
104 function testReadOnlyMode(db)
105 {
106 postMessage("Beginning read transactions:");
107 // Test the 'CREATE TABLE' operation; it should be disallowed
108 db.readTransaction(createTableCallback);
109
110 // In order to test all other 'CREATE' operations, we must create the table first
111 db.transaction(createTableCallback);
112 db.readTransaction(createStatementsCallback);
113
114 // In order to test the 'DROP' and 'other' operations, we need to first crea te the respective entities
115 db.transaction(createStatementsCallback);
116 db.readTransaction(otherStatementsCallback);
117 db.readTransaction(dropStatementsCallback);
118 postMessage("Read transactions succeeded.");
119 }
120
121 var db = openDatabaseSync("TestAuthorizerTest", "1.0", "Test the database author izer.", 1);
122 cleanup(db);
123 testReadWriteMode(db);
124 testReadOnlyMode(db);
125
126 postMessage("done");
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698