diff --git a/configure.ac b/configure.ac index db40147..7260907 100644 --- a/configure.ac +++ b/configure.ac @@ -129,6 +129,7 @@ themes/antergos/js/vendor/Makefile themes/antergos/js/Makefile themes/antergos/img/Makefile themes/simple/Makefile +themes/tools/Makefile ]) dnl ########################################################################### diff --git a/themes/Makefile.am b/themes/Makefile.am index 4693388..33782fa 100644 --- a/themes/Makefile.am +++ b/themes/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = antergos simple +SUBDIRS = antergos simple tools DISTCLEANFILES = \ Makefile.in diff --git a/themes/tools/Makefile.am b/themes/tools/Makefile.am new file mode 100644 index 0000000..d3ce159 --- /dev/null +++ b/themes/tools/Makefile.am @@ -0,0 +1,8 @@ +toolsdir = $(THEME_DIR)/tools +tools_DATA = mock.js + +EXTRA_DIST = $(tools_DATA) + + +DISTCLEANFILES = \ + Makefile.in \ No newline at end of file diff --git a/themes/tools/mock.js b/themes/tools/mock.js new file mode 100644 index 0000000..6e5c3a1 --- /dev/null +++ b/themes/tools/mock.js @@ -0,0 +1,302 @@ +/* + * + * Copyright © 2015-2016 Antergos + * + * mock.js + * + * This file is part of lightdm-webkit2-greeter + * + * lightdm-webkit-theme-antergos is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, + * or any later version. + * + * lightdm-webkit-theme-antergos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * The following additional terms are in effect as per Section 7 of this license: + * + * The preservation of all legal notices and author attributions in + * the material or in the Appropriate Legal Notices displayed + * by works containing it is required. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// mock lighdm for testing +if ( typeof lightdm == 'undefined' ) { + lightdm = {}; + lightdm.hostname = "test-host"; + lightdm.languages = [ { + code: "en_US", + name: "English(US)", + territory: "USA" + }, { code: "en_UK", name: "English(UK)", territory: "UK" } ]; + lightdm.default_language = lightdm.languages[ 0 ]; + lightdm.layouts = [ { + name: "test", + short_description: "test description", + short_description: "really long epic description" + } ]; + lightdm.default_layout = lightdm.layouts[ 0 ]; + lightdm.layout = lightdm.layouts[ 0 ]; + lightdm.sessions = [ { key: "gnome", name: "gnome", comment: "no comment" }, { + key: "cinnamon", + name: "cinnamon", + comment: "no comment" + }, { key: "openbox", name: "openbox", comment: "no comment" }, { + key: "key4", + name: "kde", + comment: "no comment" + } ]; + + lightdm.default_session = lightdm.sessions[ 0 ][ 'name' ]; + lightdm.authentication_user = null; + lightdm.is_authenticated = false; + lightdm.can_suspend = true; + lightdm.can_hibernate = true; + lightdm.can_restart = true; + lightdm.can_shutdown = true; + lightdm.awaiting_username = false; + + lightdm.users = [ + { + name: "clarkk", + real_name: "Superman", + display_name: "Clark Kent", + image: "", + language: "en_US", + layout: null, + session: "gnome", + logged_in: false + }, + { + name: "brucew", + real_name: "Batman", + display_name: "Bruce Wayne", + image: "", + language: "en_US", + layout: null, + session: "cinnamon", + logged_in: false + }, + { + name: "peterp", + real_name: "Spiderman", + display_name: "Peter Parker", + image: "", + language: "en_US", + layout: null, + session: "gnome", + logged_in: true + }, + { + name: "clarkk2", + real_name: "Superman", + display_name: "Clark Kent", + image: "", + language: "en_US", + layout: null, + session: "gnome", + logged_in: false + }, + { + name: "brucew2", + real_name: "Batman", + display_name: "Bruce Wayne", + image: "", + language: "en_US", + layout: null, + session: "cinnamon", + logged_in: false + }, + { + name: "peterp2", + real_name: "Spiderman", + display_name: "Peter Parker", + image: "", + language: "en_US", + layout: null, + session: "gnome", + logged_in: true + } + ]; + + lightdm.num_users = lightdm.users.length; + lightdm.timed_login_delay = 0; //set to a number higher than 0 for timed login simulation + lightdm.timed_login_user = lightdm.timed_login_delay > 0 ? lightdm.users[ 0 ] : null; + + lightdm.get_string_property = function() { + }; + lightdm.get_integer_property = function() { + }; + lightdm.get_boolean_property = function() { + }; + lightdm.cancel_timed_login = function() { + _lightdm_mock_check_argument_length( arguments, 0 ); + lightdm._timed_login_cancelled = true; + }; + + lightdm.provide_secret = function( secret ) { + if ( typeof lightdm._username == 'undefined' || ! lightdm._username ) { + throw "must call start_authentication first" + } + _lightdm_mock_check_argument_length( arguments, 1 ); + var user = _lightdm_mock_get_user( lightdm.username ); + + if ( ! user && secret == lightdm._username ) { + lightdm.is_authenticated = true; + lightdm.authentication_user = user; + } else { + lightdm.is_authenticated = false; + lightdm.authentication_user = null; + lightdm._username = null; + } + authentication_complete(); + }; + + lightdm.start_authentication = function( username ) { + if ( 'undefined' === typeof username ) { + show_prompt( "Username?", 'text' ); + lightdm.awaiting_username = true; + return; + } + _lightdm_mock_check_argument_length( arguments, 1 ); + if ( lightdm._username ) { + throw "Already authenticating!"; + } + var user = _lightdm_mock_get_user( username ); + if ( ! user ) { + show_error( username + " is an invalid user" ); + } + show_prompt( "Password: " ); + lightdm._username = username; + }; + + lightdm.cancel_authentication = function() { + _lightdm_mock_check_argument_length( arguments, 0 ); + if ( ! lightdm._username ) { + console.log( "we are not authenticating" ); + } + lightdm._username = null; + }; + + lightdm.suspend = function() { + alert( "System Suspended. Bye Bye" ); + document.location.reload( true ); + }; + + lightdm.hibernate = function() { + alert( "System Hibernated. Bye Bye" ); + document.location.reload( true ); + }; + + lightdm.restart = function() { + alert( "System restart. Bye Bye" ); + document.location.reload( true ); + }; + + lightdm.shutdown = function() { + alert( "System Shutdown. Bye Bye" ); + document.location.reload( true ); + }; + + lightdm.login = function( user, session ) { + _lightdm_mock_check_argument_length( arguments, 2 ); + if ( ! lightdm.is_authenticated ) { + throw "The system is not authenticated"; + } + if ( user !== lightdm.authentication_user ) { + throw "this user is not authenticated"; + } + alert( "logged in successfully!!" ); + document.location.reload( true ); + }; + lightdm.authenticate = function( session ) { + lightdm.login( null, session ); + }; + lightdm.respond = function( response ) { + if ( true === lightdm.awaiting_username ) { + lightdm.awaiting_username = false; + lightdm.start_authentication( response ); + } else { + lightdm.provide_secret( response ); + } + }; + lightdm.start_session_sync = function() { + lightdm.login( null, null ); + }; + + if ( lightdm.timed_login_delay > 0 ) { + setTimeout( function() { + if ( ! lightdm._timed_login_cancelled() ) { + timed_login(); + } + }, lightdm.timed_login_delay ); + } + + var config = {}, + greeterutil = {}; + + config.get_str = function( section, key ) { + var branding = { + logo: 'img/antergos.png', + user_logo: 'ing/antergos-logo-user.png', + background_images: '/usr/share/antergos/wallpapers' + }; + if ( 'branding' === section ) { + return branding[ key ]; + } + }; + config.get_bool = function( section, key ) { + return true; + }; + + + greeterutil.dirlist = function( directory ) { + if ( '/usr/share/antergos/wallpapers' === directory ) { + return [ + '/usr/share/antergos/wallpapers/83II_by_bo0xVn.jpg', + '/usr/share/antergos/wallpapers/antergos-wallpaper.png', + '/usr/share/antergos/wallpapers/as_time_goes_by____by_moskanon-d5dgvt8.jpg', + '/usr/share/antergos/wallpapers/autumn_hike___plant_details_by_aoiban-d5l7y83.jpg', + '/usr/share/antergos/wallpapers/blossom_by_snipes2.jpg', + '/usr/share/antergos/wallpapers/c65sk3mshowxrtlljbvh.jpg', + '/usr/share/antergos/wallpapers/early_morning_by_kylekc.jpg', + '/usr/share/antergos/wallpapers/extinction_by_signcropstealer-d5j4y84.jpg', + '/usr/share/antergos/wallpapers/field_by_stevenfields-d59ap2i.jpg', + '/usr/share/antergos/wallpapers/Grass_by_masha_darkelf666.jpg', + '/usr/share/antergos/wallpapers/Grass_Fullscreen.jpg', + '/usr/share/antergos/wallpapers/humble_by_splendidofsun-d5g47hb.jpg', + '/usr/share/antergos/wallpapers/In_the_Grass.jpg', + '/usr/share/antergos/wallpapers/morning_light.jpg', + '/usr/share/antergos/wallpapers/Nautilus_Fullscreen.jpg', + '/usr/share/antergos/wallpapers/nikon_d40.jpg', + '/usr/share/antergos/wallpapers/sky_full_of_stars.jpg', + '/usr/share/antergos/wallpapers/solely_by_stevenfields.jpg', + '/usr/share/antergos/wallpapers/the_world_inside_my_lens__by_moskanon-d5fsiqs.jpg', + '/usr/share/antergos/wallpapers/white_line_by_snipes2.jpg' + ] + } + } +} + +function _lightdm_mock_check_argument_length( args, length ) { + if ( args.length != length ) { + throw "incorrect number of arguments in function call"; + } +} + +function _lightdm_mock_get_user( username ) { + var user = null; + for ( var i = 0; i < lightdm.users.length; ++ i ) { + if ( lightdm.users[ i ].name == username ) { + user = lightdm.users[ i ]; + break; + } + } + return user; +} \ No newline at end of file