<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ysun34</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ysun34"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ysun34"/>
	<updated>2026-08-16T21:27:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=106022</id>
		<title>CSC/ECE 517 Fall 2016 E1684: Feature Test for Assignment Submission</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=106022"/>
		<updated>2016-12-01T22:51:31Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza ===&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza] is an open-source project on GitHub used by students to view/submit assignments and review others' work. Expertiza also provides tools to visualize the scores and gauge the improvements made during the course semester. It also facilitates and monitors team projects. It is targeted at educational and non-profit organizations.&lt;br /&gt;
&lt;br /&gt;
=== Travis CI ===&lt;br /&gt;
[https://travis-ci.org Travis CI] is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub. &lt;br /&gt;
&lt;br /&gt;
'''Configuration:'''&lt;br /&gt;
Travis CI is configured by adding a file named .travis.yml, which is a YAML format text file, to the root directory of the repository. This file specifies the programming language used, the desired building and testing environment (including dependencies which must be installed before the software can be built and tested), and various other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Operation:'''&lt;br /&gt;
When Travis CI has been activated for a given repository, GitHub will notify it whenever new commits are pushed to that repository or a pull request is submitted. It can also be configured to only run for specific branches, or branches whose names match a specific pattern. Travis CI will then check out the relevant branch and run the commands specified in .travis.yml, which usually build the software and run any automated tests. When that process has completed, Travis notifies the developer(s) in the way it has been configured to do so—for example, by sending an email containing the test results (showing success or failure), or by posting a message on an IRC channel. In the case of pull requests, the pull request will be annotated with the outcome and a link to the build log, using a GitHub integration.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
[https://github.com/jnicklas/capybara Capybara] supports selenium-webdriver, which is mostly used in web-based automation frameworks. It supports JavaScript, can access HTTP resources outside the application, and can also be setup for testing in headless mode which is especially useful for CI scenarios.&lt;br /&gt;
&lt;br /&gt;
'''Using Capybara with [http://rspec.info/ RSpec]:'''&lt;br /&gt;
Load RSpec 2.x support by adding the following line(typically to the spec_helper.rb file):&lt;br /&gt;
 ''require 'capybara/rspec' &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
== '''Project Requirement''' ==&lt;br /&gt;
&lt;br /&gt;
There should be a feature test for submission of the assignment by the student. Once the assignment is created by the instructor the only call to action for the student is assignment submission. The purpose of this project is to test whether the submission function could work properly under different scenarios. We will design multiple test cases to simulate different scenarios which the system could encounter. For example, how system respond when a user uploads an invalid URL. The following part will provide more and detailed information on test cases.&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
When a user is attempting to submit an assignment, there are some possible cases need to be considered.&lt;br /&gt;
&lt;br /&gt;
# Upload single valid link: upload a valid link, the system should properly render the page and add this link into the database. We will use the following statements to simulate the submit action.&lt;br /&gt;
&lt;br /&gt;
'' &lt;br /&gt;
     fill_in 'submission', with: &amp;quot;https://www.google.com&amp;quot;&lt;br /&gt;
     click_on 'Upload link'&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
# Upload invalid link: upload an invalid link (e.g. a non-existing link), the system should detect the invalid link, reject the submission and cast corresponding error message.&lt;br /&gt;
# Upload multiple links: upload multiple links, the system should properly render the page and add the new link into the database. We will use the following statement to check if the current page has the uploaded URL.&lt;br /&gt;
&lt;br /&gt;
''&lt;br /&gt;
     expect(page).to have_content &amp;quot;https://www.google.com&amp;quot;&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
# Upload duplicated links: upload an link which has already been uploaded before, the system should detect this duplicated link, reject the submission and cast error message.&lt;br /&gt;
# Upload empty link: upload an empty link, the system should reject the submission and cast corresponding error message.&lt;br /&gt;
# Upload a valid file: upload a valid file, the system should properly render the page and add this file into the directory. We will use the following statements to simulation the submit action.&lt;br /&gt;
&lt;br /&gt;
''&lt;br /&gt;
     attach_file('uploaded_file', file_path)&lt;br /&gt;
     click_on 'Upload file'&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
# Upload multiple files: upload multiple files, the system should properly render the page and add the new file into the directory.&lt;br /&gt;
# Upload duplicated files: upload a file which has already been uploaded before, the system should update the existed file with new one. The test code will check whether the content of this specific file was successfully updated.&lt;br /&gt;
&lt;br /&gt;
== '''Approach''' ==&lt;br /&gt;
1. First, using [https://github.com/expertiza/expertiza/blob/master/spec/factories/factories.rb factories] to create test data: create assignment, create topic, create participant. &lt;br /&gt;
 ''before(:each) do&lt;br /&gt;
       create(:assignment, name: &amp;quot;Assignment1684&amp;quot;, directory_path: &amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
       create_list(:participant, 3)&lt;br /&gt;
       create(:topic, topic_name: &amp;quot;Topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
       create(:deadline_right)&lt;br /&gt;
       create(:deadline_right, name: 'Late')&lt;br /&gt;
       create(:deadline_right, name: 'OK')&lt;br /&gt;
       create(:assignment_due_date, deadline_type: DeadlineType.where(name: &amp;quot;submission&amp;quot;).first, due_at: DateTime.now + 1)&lt;br /&gt;
   end''&lt;br /&gt;
2. Mock the workflow of Assignment submission using Capybara.&lt;br /&gt;
&lt;br /&gt;
[[File:Work flow.png]]&lt;br /&gt;
&lt;br /&gt;
3. Check the result of the submission from both web page and database. &lt;br /&gt;
&lt;br /&gt;
In database level, the submission results are stored in the table: TEAMS.&lt;br /&gt;
&lt;br /&gt;
[[File:Teams.jpg]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=106021</id>
		<title>CSC/ECE 517 Fall 2016 E1684: Feature Test for Assignment Submission</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=106021"/>
		<updated>2016-12-01T20:29:16Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza ===&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza] is an open-source project on GitHub used by students to view/submit assignments and review others' work. Expertiza also provides tools to visualize the scores and gauge the improvements made during the course semester. It also facilitates and monitors team projects. It is targeted at educational and non-profit organizations.&lt;br /&gt;
&lt;br /&gt;
=== Travis CI ===&lt;br /&gt;
[https://travis-ci.org Travis CI] is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub. &lt;br /&gt;
&lt;br /&gt;
'''Configuration:'''&lt;br /&gt;
Travis CI is configured by adding a file named .travis.yml, which is a YAML format text file, to the root directory of the repository. This file specifies the programming language used, the desired building and testing environment (including dependencies which must be installed before the software can be built and tested), and various other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Operation:'''&lt;br /&gt;
When Travis CI has been activated for a given repository, GitHub will notify it whenever new commits are pushed to that repository or a pull request is submitted. It can also be configured to only run for specific branches, or branches whose names match a specific pattern. Travis CI will then check out the relevant branch and run the commands specified in .travis.yml, which usually build the software and run any automated tests. When that process has completed, Travis notifies the developer(s) in the way it has been configured to do so—for example, by sending an email containing the test results (showing success or failure), or by posting a message on an IRC channel. In the case of pull requests, the pull request will be annotated with the outcome and a link to the build log, using a GitHub integration.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
[https://github.com/jnicklas/capybara Capybara] supports selenium-webdriver, which is mostly used in web-based automation frameworks. It supports JavaScript, can access HTTP resources outside the application, and can also be setup for testing in headless mode which is especially useful for CI scenarios.&lt;br /&gt;
&lt;br /&gt;
'''Using Capybara with [http://rspec.info/ RSpec]:'''&lt;br /&gt;
Load RSpec 2.x support by adding the following line(typically to the spec_helper.rb file):&lt;br /&gt;
 ''require 'capybara/rspec' &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
== '''Project Requirement''' ==&lt;br /&gt;
&lt;br /&gt;
There should be a feature test for submission of the assignment by the student. Once the assignment is created by the instructor the only call to action for the student is assignment submission. The purpose of this project is to test whether the submission function could work properly under different scenarios. We will design multiple test cases to simulate different scenarios which the system could encounter. For example, how system respond when a user uploads an invalid URL. The following part will provide more and detailed information on test cases.&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
When a user is attempting to submit an assignment, there are some possible cases need to be considered.&lt;br /&gt;
&lt;br /&gt;
# Upload single valid link: upload a valid link, the system should properly render the page and add this link into the database.&lt;br /&gt;
# Upload invalid link: upload an invalid link (e.g. a non-existing link), the system should detect the invalid link, reject the submission and cast error message.&lt;br /&gt;
# Upload multiple links: upload multiple links, the system should properly render the page and add the new link into the database.&lt;br /&gt;
# Upload duplicated links: upload an link which has already been uploaded before, the system should detect this duplicated link, reject the submission and cast error message.&lt;br /&gt;
# Upload empty link: upload an empty link, the system should reject the submission and cast error message.&lt;br /&gt;
# Upload a valid file: upload a valid file, the system should properly render the page and add this file into the database.&lt;br /&gt;
# Upload multiple files: upload multiple files, the system should properly render the page and add the new file into the database.&lt;br /&gt;
# Upload duplicated files: upload a file which has already been uploaded before, the system should update the existed file with new one.&lt;br /&gt;
&lt;br /&gt;
== '''Approach''' ==&lt;br /&gt;
1. First, using [https://github.com/expertiza/expertiza/blob/master/spec/factories/factories.rb factories] to create test data: create assignment, create topic, create participant. &lt;br /&gt;
 ''before(:each) do&lt;br /&gt;
       create(:assignment, name: &amp;quot;Assignment1684&amp;quot;, directory_path: &amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
       create_list(:participant, 3)&lt;br /&gt;
       create(:topic, topic_name: &amp;quot;Topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
       create(:deadline_right)&lt;br /&gt;
       create(:deadline_right, name: 'Late')&lt;br /&gt;
       create(:deadline_right, name: 'OK')&lt;br /&gt;
       create(:assignment_due_date, deadline_type: DeadlineType.where(name: &amp;quot;submission&amp;quot;).first, due_at: DateTime.now + 1)&lt;br /&gt;
   end''&lt;br /&gt;
2. Mock the workflow of Assignment submission using Capybara.&lt;br /&gt;
&lt;br /&gt;
[[File:Work flow.png]]&lt;br /&gt;
&lt;br /&gt;
3. Check the result of the submission from both web page and database. &lt;br /&gt;
&lt;br /&gt;
In database level, the submission results are stored in the table: TEAMS.&lt;br /&gt;
&lt;br /&gt;
[[File:Teams.jpg]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=106018</id>
		<title>CSC/ECE 517 Fall 2016 E1684: Feature Test for Assignment Submission</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=106018"/>
		<updated>2016-12-01T02:30:15Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza ===&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza] is an open-source project on GitHub used by students to view/submit assignments and review others' work. Expertiza also provides tools to visualize the scores and gauge the improvements made during the course semester. It also facilitates and monitors team projects. It is targeted at educational and non-profit organizations.&lt;br /&gt;
&lt;br /&gt;
=== Travis CI ===&lt;br /&gt;
[https://travis-ci.org Travis CI] is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub. &lt;br /&gt;
&lt;br /&gt;
'''Configuration:'''&lt;br /&gt;
Travis CI is configured by adding a file named .travis.yml, which is a YAML format text file, to the root directory of the repository. This file specifies the programming language used, the desired building and testing environment (including dependencies which must be installed before the software can be built and tested), and various other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Operation:'''&lt;br /&gt;
When Travis CI has been activated for a given repository, GitHub will notify it whenever new commits are pushed to that repository or a pull request is submitted. It can also be configured to only run for specific branches, or branches whose names match a specific pattern. Travis CI will then check out the relevant branch and run the commands specified in .travis.yml, which usually build the software and run any automated tests. When that process has completed, Travis notifies the developer(s) in the way it has been configured to do so—for example, by sending an email containing the test results (showing success or failure), or by posting a message on an IRC channel. In the case of pull requests, the pull request will be annotated with the outcome and a link to the build log, using a GitHub integration.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
[https://github.com/jnicklas/capybara Capybara] supports selenium-webdriver, which is mostly used in web-based automation frameworks. It supports JavaScript, can access HTTP resources outside the application, and can also be setup for testing in headless mode which is especially useful for CI scenarios.&lt;br /&gt;
&lt;br /&gt;
'''Using Capybara with [http://rspec.info/ RSpec]:'''&lt;br /&gt;
Load RSpec 2.x support by adding the following line(typically to the spec_helper.rb file):&lt;br /&gt;
 ''require 'capybara/rspec' &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
== '''Project Requirement''' ==&lt;br /&gt;
&lt;br /&gt;
There should be a feature test for submission of the assignment by the student. Once the assignment is created by the instructor the only call to action for the student is assignment submission. The purpose of this project is to test whether the submission function could work properly under different scenarios. We will design multiple test cases to simulate different scenarios which the system could encounter. For example, how system respond when a user uploads an invalid URL. The following part will provide more and detailed information on test cases.&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
When a user is attempting to submit an assignment, there are some possible cases need to be considered.&lt;br /&gt;
&lt;br /&gt;
# Upload single valid link: upload a valid link, the system should properly render the page and add this link into the database.&lt;br /&gt;
# Upload invalid link: upload an invalid link (e.g. a non-existing link), the system should detect the invalid link, reject the submission and cast error message.&lt;br /&gt;
# Upload multiple links: upload multiple links, the system should properly render the page and add the new link into the database.&lt;br /&gt;
# Upload duplicated links: upload an link which has already been uploaded before, the system should detect this duplicated link, reject the submission and cast error message.&lt;br /&gt;
# Upload empty link: upload an empty link, the system should reject the submission and cast error message.&lt;br /&gt;
# Upload a valid file: upload a valid file, the system should properly render the page and add this file into the database.&lt;br /&gt;
# Upload multiple files: upload multiple files, the system should properly render the page and add the new file into the database.&lt;br /&gt;
# Upload duplicated files: upload a file which has already been uploaded before, the system should detect this duplicated file, reject the submission and cast error message.&lt;br /&gt;
&lt;br /&gt;
== '''Approach''' ==&lt;br /&gt;
1. First, using [https://github.com/expertiza/expertiza/blob/master/spec/factories/factories.rb factories] to create test data: create assignment, create topic, create participant. &lt;br /&gt;
 ''before(:each) do&lt;br /&gt;
       create(:assignment, name: &amp;quot;Assignment1684&amp;quot;, directory_path: &amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
       create_list(:participant, 3)&lt;br /&gt;
       create(:topic, topic_name: &amp;quot;Topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
       create(:deadline_right)&lt;br /&gt;
       create(:deadline_right, name: 'Late')&lt;br /&gt;
       create(:deadline_right, name: 'OK')&lt;br /&gt;
       create(:assignment_due_date, deadline_type: DeadlineType.where(name: &amp;quot;submission&amp;quot;).first, due_at: DateTime.now + 1)&lt;br /&gt;
   end''&lt;br /&gt;
2. Mock the workflow of Assignment submission using Capybara.&lt;br /&gt;
&lt;br /&gt;
[[File:Work flow.png]]&lt;br /&gt;
&lt;br /&gt;
3. Check the result of the submission from both web page and database. &lt;br /&gt;
&lt;br /&gt;
In database level, the submission results are stored in the table: TEAMS.&lt;br /&gt;
&lt;br /&gt;
[[File:Teams.jpg]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=105985</id>
		<title>CSC/ECE 517 Fall 2016 E1684: Feature Test for Assignment Submission</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=105985"/>
		<updated>2016-11-16T18:30:46Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza ===&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza] is an open-source project on GitHub used by students to view/submit assignments and review others' work. Expertiza also provides tools to visualize the scores and gauge the improvements made during the course semester. It also facilitates and monitors team projects. It is targeted at educational and non-profit organizations.&lt;br /&gt;
&lt;br /&gt;
=== Travis CI ===&lt;br /&gt;
[https://travis-ci.org Travis CI] is a hosted, distributed continuous integration service used to build and test software projects hosted at GitHub. &lt;br /&gt;
&lt;br /&gt;
'''Configuration:'''&lt;br /&gt;
Travis CI is configured by adding a file named .travis.yml, which is a YAML format text file, to the root directory of the repository. This file specifies the programming language used, the desired building and testing environment (including dependencies which must be installed before the software can be built and tested), and various other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Operation:'''&lt;br /&gt;
When Travis CI has been activated for a given repository, GitHub will notify it whenever new commits are pushed to that repository or a pull request is submitted. It can also be configured to only run for specific branches, or branches whose names match a specific pattern. Travis CI will then check out the relevant branch and run the commands specified in .travis.yml, which usually build the software and run any automated tests. When that process has completed, Travis notifies the developer(s) in the way it has been configured to do so—for example, by sending an email containing the test results (showing success or failure), or by posting a message on an IRC channel. In the case of pull requests, the pull request will be annotated with the outcome and a link to the build log, using a GitHub integration.&lt;br /&gt;
&lt;br /&gt;
=== Capybara ===&lt;br /&gt;
[https://github.com/jnicklas/capybara Capybara] supports selenium-webdriver, which is mostly used in web-based automation frameworks. It supports JavaScript, can access HTTP resources outside the application, and can also be setup for testing in headless mode which is especially useful for CI scenarios.&lt;br /&gt;
&lt;br /&gt;
'''Using Capybara with [http://rspec.info/ RSpec]:'''&lt;br /&gt;
Load RSpec 2.x support by adding the following line(typically to the spec_helper.rb file):&lt;br /&gt;
 ''require 'capybara/rspec' &lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
== '''Project Requirement''' ==&lt;br /&gt;
&lt;br /&gt;
There should be a feature test for submission of the assignment by the student. Once the assignment is created by the instructor the only call to action for the student is assignment submission. The purpose of this project is to test whether the submission function could work properly under different scenarios. We will design multiple test cases to simulate different scenarios which the system could encounter. For example, how system respond when a user uploads an invalid URL. The following part will provide more and detailed information on test cases.&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
When a user is attempting to submit an assignment, there are some possible cases need to be considered.&lt;br /&gt;
&lt;br /&gt;
# Upload a valid link: upload a valid link, the system should properly render the page and add this link into the database.&lt;br /&gt;
# Upload an invalid link: upload an invalid link (e.g. a non-existing link), the system should detect the invalid link, reject the submission and cast error message.&lt;br /&gt;
# Upload multiple links: upload multiple links, the system should properly render the page and add the new link into the database.&lt;br /&gt;
# Upload duplicated links: upload an link which has already been uploaded before, the system should detect this duplicated link, reject the submission and cast error message.&lt;br /&gt;
# Upload empty link: upload an empty link, the system should reject the submission and cast error message.&lt;br /&gt;
# Upload a valid file: upload a valid file, the system should properly render the page and add this file into the database.&lt;br /&gt;
# Upload multiple files: upload multiple files, the system should properly render the page and add the new file into the database.&lt;br /&gt;
# Upload duplicated files: upload a file which has already been uploaded before, the system should detect this duplicated file, reject the submission and cast error message.&lt;br /&gt;
&lt;br /&gt;
== '''Approach''' ==&lt;br /&gt;
1. First, using [https://github.com/expertiza/expertiza/blob/master/spec/factories/factories.rb factories] to create test data: create assignment, create topic, create participant. &lt;br /&gt;
 ''before(:each) do&lt;br /&gt;
       create(:assignment, name: &amp;quot;Assignment1684&amp;quot;, directory_path: &amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
       create_list(:participant, 3)&lt;br /&gt;
       create(:topic, topic_name: &amp;quot;Topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;submission&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;review&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;metareview&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;drop_topic&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;signup&amp;quot;)&lt;br /&gt;
       create(:deadline_type, name: &amp;quot;team_formation&amp;quot;)&lt;br /&gt;
       create(:deadline_right)&lt;br /&gt;
       create(:deadline_right, name: 'Late')&lt;br /&gt;
       create(:deadline_right, name: 'OK')&lt;br /&gt;
       create(:assignment_due_date, deadline_type: DeadlineType.where(name: &amp;quot;submission&amp;quot;).first, due_at: DateTime.now + 1)&lt;br /&gt;
   end''&lt;br /&gt;
2. Mock the workflow of Assignment submission using Capybara.&lt;br /&gt;
&lt;br /&gt;
[[File:Work flow.png]]&lt;br /&gt;
&lt;br /&gt;
3. Check the result of the submission from both web page and database. &lt;br /&gt;
&lt;br /&gt;
In database level, the submission results are stored in the table: TEAMS.&lt;br /&gt;
&lt;br /&gt;
[[File:Teams.jpg]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=105186</id>
		<title>CSC/ECE 517 Fall 2016 E1684: Feature Test for Assignment Submission</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1684:_Feature_Test_for_Assignment_Submission&amp;diff=105186"/>
		<updated>2016-11-10T02:14:10Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction to Expertiza''' ==&lt;br /&gt;
Expertiza is an online system that is used by students to view/submit assignments and review others' work. Expertiza also provides tools to visualize the scores and gauge the improvements made during the course semester. It also facilitates and monitors team projects. It is targeted at educational and non-profit organizations. &lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source project with the source code available as a public repository on GitHub. It is developed using Ruby on Rails and is increasingly becoming robust thanks to the innumerable bugs being fixed by the community. The project has a micro-blog on SourceForge where the developer community report bugs and document updates.&lt;br /&gt;
&lt;br /&gt;
== '''Project Requirement''' ==&lt;br /&gt;
&lt;br /&gt;
There should be a feature test for submission of the assignment by the student. Once the Assignment is created by the instructor the only Call to action for the student is assignment submission.&lt;br /&gt;
&lt;br /&gt;
== '''Approach''' ==&lt;br /&gt;
&lt;br /&gt;
Mock the flow of Assignment submission using Capybara and check the result of the submission.&lt;br /&gt;
&lt;br /&gt;
===Workflow===&lt;br /&gt;
&lt;br /&gt;
Student login -&amp;gt; click on the assignment -&amp;gt; upload link or upload file&lt;br /&gt;
&lt;br /&gt;
[[File:Work flow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Scenarios ===&lt;br /&gt;
&lt;br /&gt;
# Submit hyperlink → click hyperlink → have content.&lt;br /&gt;
# Submit file → download file → have content.&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Work_flow.png&amp;diff=105183</id>
		<title>File:Work flow.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Work_flow.png&amp;diff=105183"/>
		<updated>2016-11-10T02:11:29Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104660</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104660"/>
		<updated>2016-11-05T05:44:38Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Change using enum to bitflags that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[File:Bitflags.JPG]]&lt;br /&gt;
&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validation.JPG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.JPG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.JPG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. However, after further discuss with servo project member, we found a disadvantage of the original design of using enum. Therefore we have made an agreement on changing this into using bitflags. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with the new code.&lt;br /&gt;
===Test from UI===&lt;br /&gt;
At this stage, the project can't be tested from UI. There are still some subsequent steps to be implemented after this.&lt;br /&gt;
&lt;br /&gt;
===For reviewers===&lt;br /&gt;
In addition to the reasons mentioned above, the servo is a web browser and not a web application. Therefore it can't be deployed on the cloud server. All these would make it hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104659</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104659"/>
		<updated>2016-11-05T05:41:55Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validation.JPG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.JPG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.JPG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. However, after further discuss with servo project member, we found a disadvantage of the original design of using enum. Therefore we have made an agreement on changing this into using bitflags. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with the new code.&lt;br /&gt;
===Test from UI===&lt;br /&gt;
At this stage, the project can't be tested from UI. There are still some subsequent steps to be implemented after this.&lt;br /&gt;
&lt;br /&gt;
===For reviewers===&lt;br /&gt;
In addition to the reasons mentioned above, the servo is a web browser and not a web application. Therefore it can't be deployed on the cloud server. All these would make it hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Bitflags.JPG&amp;diff=104658</id>
		<title>File:Bitflags.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Bitflags.JPG&amp;diff=104658"/>
		<updated>2016-11-05T05:41:22Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Inputelement.JPG&amp;diff=104657</id>
		<title>File:Inputelement.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Inputelement.JPG&amp;diff=104657"/>
		<updated>2016-11-05T05:38:18Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Formelement.JPG&amp;diff=104656</id>
		<title>File:Formelement.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Formelement.JPG&amp;diff=104656"/>
		<updated>2016-11-05T05:38:00Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Validation.JPG&amp;diff=104655</id>
		<title>File:Validation.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Validation.JPG&amp;diff=104655"/>
		<updated>2016-11-05T05:37:35Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104654</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104654"/>
		<updated>2016-11-05T05:29:55Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design patterns &amp;amp; o-o practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. However, after further discuss with servo project member, we found a disadvantage of the original design of using enum. Therefore we have made an agreement on changing this into using bitflags. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with the new code.&lt;br /&gt;
===Test from UI===&lt;br /&gt;
At this stage, the project can't be tested from UI. There are still some subsequent steps to be implemented after this.&lt;br /&gt;
&lt;br /&gt;
===For reviewers===&lt;br /&gt;
In addition to the reasons mentioned above, the servo is a web browser and not a web application. Therefore it can't be deployed on the cloud server. All these would make it hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104151</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104151"/>
		<updated>2016-10-31T23:16:29Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Test from ui */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with new code.&lt;br /&gt;
===Test from UI===&lt;br /&gt;
At this stage, the project can't be tested from UI. There are still some subsequent steps to be implemented after this.&lt;br /&gt;
&lt;br /&gt;
===For reviewers===&lt;br /&gt;
In addition to the reason mentioned above, servo is a browser but not a web application. Therefore it can't be deployed on the cloud server. All these would make it hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104150</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104150"/>
		<updated>2016-10-31T23:16:17Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with new code.&lt;br /&gt;
===Test from ui===&lt;br /&gt;
At this stage, the project can't be tested from UI. There are still some subsequent steps to be implemented after this.&lt;br /&gt;
===For reviewers===&lt;br /&gt;
In addition to the reason mentioned above, servo is a browser but not a web application. Therefore it can't be deployed on the cloud server. All these would make it hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104148</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104148"/>
		<updated>2016-10-31T22:57:32Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: fix some grammar mistakes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with new code.&lt;br /&gt;
===For reviewers===&lt;br /&gt;
So far this project only contains initial steps, the whole HTML form validation will be implemented after subsequent steps. So it would be hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104011</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104011"/>
		<updated>2016-10-29T23:30:31Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with new code.&lt;br /&gt;
===For reviewers===&lt;br /&gt;
So far this project only contains initial steps, the whole HTML form validation will be implemented after subsequent steps. So it would be hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016&amp;diff=103993</id>
		<title>CSC/ECE 517 Fall 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016&amp;diff=103993"/>
		<updated>2016-10-29T18:29:01Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.example.com link title]==Calibration Assignment Submissions==&lt;br /&gt;
*[[Calibration Assignment Submission (Firebrick JS)]]&lt;br /&gt;
*[[Calibration Assignment Submission (Active Job)]]&lt;br /&gt;
==Writing Assignments 2==&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1666. Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1643. Refactor Suggestion controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1631. Refactoring Bidding Interface]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1674.Refactor leaderboard.rb and write unit tests]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1671. Unit Tests for participants.rb Hierarchy]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1668.Test e-mailing functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1658. Refractor lottery_controller.rb and write integration tests]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1660. Review requirements and thresholds]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1650. Sort instructor views alphabetically by default]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1644. Refactor and test Teams Controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1645. Refactoring Tree Display Controller]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1659. Refactor on_the_fly_calc.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1657. Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1653. Fix and improve rubric criteria]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1642. Refactor review_response_map.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1664:_Feature_Test_Assignment_Creation]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1666. Test team functionality]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1654. Improve_date-picker_and_deadlines]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1652 Fix teammate advertisements and requests to join a team ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1662. UI issues/fixes]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1673. Refactor question_type.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1675. Timestamp for student file &amp;amp; hyperlink submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1640. Refactor response.rb and response_helper.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1634. Refactor and write unit test of due_date.rb and deadline_helper.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/M1654._Improve_network_security_features]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1670._Unit_tests_for_answers.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1641. Refactor review_mapping_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/M1652_Implement_ImageMap_Support_Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/E1648/Add_past_due_assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2016/E1656. Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=M1653_Implement_HTML_form_validation&amp;diff=103992</id>
		<title>M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=M1653_Implement_HTML_form_validation&amp;diff=103992"/>
		<updated>2016-10-29T18:20:44Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: moved M1653 Implement HTML form validation to CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103991</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103991"/>
		<updated>2016-10-29T18:20:44Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: moved M1653 Implement HTML form validation to CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103849</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103849"/>
		<updated>2016-10-29T04:00:11Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Implemented steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*We implemented this trait for different form elements&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*Add code to circularly check the type of elements, if it is input elements then calls &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Formelement.PNG&amp;diff=103847</id>
		<title>File:Formelement.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Formelement.PNG&amp;diff=103847"/>
		<updated>2016-10-29T03:59:40Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103823</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103823"/>
		<updated>2016-10-29T03:46:44Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
&lt;br /&gt;
*We implemented this trait for different form elements&lt;br /&gt;
[[File:http://wiki.expertiza.ncsu.edu/images/6/6c/Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*Add code to circularly check the type of elements, if it is input elements then calls &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Inputelement.PNG&amp;diff=103816</id>
		<title>File:Inputelement.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Inputelement.PNG&amp;diff=103816"/>
		<updated>2016-10-29T03:43:40Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103814</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103814"/>
		<updated>2016-10-29T03:42:23Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
&lt;br /&gt;
*We implemented this trait for different form elements&lt;br /&gt;
&lt;br /&gt;
*Add code to circularly check the type of elements, if it is input elements then calls &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Validatable.PNG&amp;diff=103794</id>
		<title>File:Validatable.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Validatable.PNG&amp;diff=103794"/>
		<updated>2016-10-29T03:27:20Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103791</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103791"/>
		<updated>2016-10-29T03:25:50Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
* Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103763</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103763"/>
		<updated>2016-10-29T03:12:55Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103762</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103762"/>
		<updated>2016-10-29T03:11:42Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Implemented Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103761</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103761"/>
		<updated>2016-10-29T03:11:31Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Challenges Faced */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103760</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103760"/>
		<updated>2016-10-29T03:11:15Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design Patterns &amp;amp; OO Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103757</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103757"/>
		<updated>2016-10-29T03:09:57Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Testing with UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103753</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103753"/>
		<updated>2016-10-29T03:08:11Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Testing with tidy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with UI===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check whether the validation was working or not.&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103752</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103752"/>
		<updated>2016-10-29T03:07:30Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Testing with Tidy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with UI===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check whether the validation was working or not.&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103750</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103750"/>
		<updated>2016-10-29T03:05:30Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Initial Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with Tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy  we got 20 syntactic errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with UI===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check whether the validation was working or not.&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102807</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102807"/>
		<updated>2016-10-28T18:43:27Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102806</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102806"/>
		<updated>2016-10-28T18:43:13Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Bbansal&amp;diff=102805</id>
		<title>User:Bbansal</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Bbansal&amp;diff=102805"/>
		<updated>2016-10-28T18:42:16Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: moved User:Bbansal to M1653 Implement HTML form validation: Move user page to project title page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[M1653 Implement HTML form validation]]&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102804</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102804"/>
		<updated>2016-10-28T18:42:16Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: moved User:Bbansal to M1653 Implement HTML form validation: Move user page to project title page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102770</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102770"/>
		<updated>2016-10-28T16:46:38Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102769</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102769"/>
		<updated>2016-10-28T16:45:59Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102768</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102768"/>
		<updated>2016-10-28T16:43:03Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102767</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102767"/>
		<updated>2016-10-28T16:42:32Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102766</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102766"/>
		<updated>2016-10-28T16:41:22Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design Patterns &amp;amp; OO Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102763</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102763"/>
		<updated>2016-10-28T16:39:27Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design Patterns &amp;amp; OO Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. We managed to avoid the redundant code and tried to meet code standard of servo. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102762</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102762"/>
		<updated>2016-10-28T16:39:06Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design Patterns &amp;amp; OO Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. We managed to avoid the redundant code and tried to meet code standard of servo. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
cd servo&lt;br /&gt;
./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102761</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102761"/>
		<updated>2016-10-28T16:38:42Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design Patterns &amp;amp; OO Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. We managed to avoid the redundant code and tried to meet code standard of servo. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102756</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102756"/>
		<updated>2016-10-28T16:37:11Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Design Patterns &amp;amp; OO Practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. We managed to avoid the redundant code and tried to meet code standard of servo. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./mach test-tidy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102747</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102747"/>
		<updated>2016-10-28T16:16:38Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
We were not supposed to change the design apart from adding a new behaviour/ability for HTML Element. We tried to follow good OO practices throughout the  development process. We always tried to follow the DRY principle in order to avoid repetition of code. Servo has it's own coding standards which are checked by running following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./mach test-tidy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the above code there were a few issues generated and we have fixed all the issues.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102734</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102734"/>
		<updated>2016-10-28T16:00:02Z</updated>

		<summary type="html">&lt;p&gt;Ysun34: /* Project Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
We were not supposed to change the design apart from adding a new behaviour/ability for HTML Element. We tried to follow good OO practices throughout the  development process. We always tried to follow the DRY principle in order to avoid repetition of code. Servo has it's own coding standards which are checked by running following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./mach test-tidy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the above code there were a few issues generated and we have fixed all the issues.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Ysun34</name></author>
	</entry>
</feed>