Index: /CKEditor/branches/features/aria/_source/lang/en.js
===================================================================
--- /CKEditor/branches/features/aria/_source/lang/en.js	(revision 4912)
+++ /CKEditor/branches/features/aria/_source/lang/en.js	(revision 4913)
@@ -33,5 +33,6 @@
 	 */
 	editorTitle		: 'Rich text editor, %1',
-	editorVoiceLabel : 'Press ALT+F10 moves to toolbar, ALT+F11 moves to elementspath bar.',
+	editorWysiwygModeVoiceLabel : 'Wysiwyg mode, press ALT+F10 moves to toolbar, ALT+F11 moves to elementspath bar.SHIFT+F10 opens contextmenu.',
+	editorSourceModeVoiceLabel : 'Source mode, press ALT+F10 moves to toolbar.',
 
 	// Toolbar buttons without dialogs.
Index: /CKEditor/branches/features/aria/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/sourcearea/plugin.js	(revision 4912)
+++ /CKEditor/branches/features/aria/_source/plugins/sourcearea/plugin.js	(revision 4913)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -17,4 +17,7 @@
 		var sourcearea = CKEDITOR.plugins.sourcearea;
 
+		var sourceareaLabel = editor.lang.editorTitle.replace( '%1', editor.name ),
+			 sourceareaDescriptiveLabel = editor.lang.editorSourceModeVoiceLabel;
+
 		editor.on( 'editingBlockReady', function()
 			{
@@ -29,4 +32,8 @@
 								holderElement.setStyle( 'position', 'relative' );
 
+							// Accessibility label for iframe document.
+							var labelId = editor.name + '_editing_textarea_label',
+								 descriptionId = editor.name + '_editing_textarea_desc';
+
 							// Create the source area <textarea>.
 							editor.textarea = textarea = new CKEDITOR.dom.element( 'textarea' );
@@ -34,5 +41,8 @@
 								{
 									dir : 'ltr',
-									tabIndex : -1
+									tabIndex : -1,
+									'role' : 'textbox',
+									'aria-labelledby' : labelId,
+									'aria-describedby' : descriptionId
 								});
 							textarea.addClass( 'cke_source' );
@@ -88,6 +98,19 @@
 							// <textarea> to it.
 							holderElement.setHtml( '' );
+
+							var label = CKEDITOR.dom.element.createFromHtml(
+								'<div style="display:none">' +
+									'<span id="' + labelId + '">' +
+										CKEDITOR.tools.htmlEncode( sourceareaLabel ) +
+									'</span>' +
+									'<span id="' + descriptionId + '">' +
+										CKEDITOR.tools.htmlEncode( sourceareaDescriptiveLabel ) +
+									'</span>' +
+								'</div>'
+								, CKEDITOR.document );
+
 							holderElement.append( textarea );
 							textarea.setStyles( styles );
+							label.insertBefore( textarea );
 
 							textarea.on( 'blur', function()
Index: /CKEditor/branches/features/aria/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/wysiwygarea/plugin.js	(revision 4912)
+++ /CKEditor/branches/features/aria/_source/plugins/wysiwygarea/plugin.js	(revision 4913)
@@ -243,5 +243,5 @@
 
 			var frameLabel = editor.lang.editorTitle.replace( '%1', editor.name ),
-				 frameDescriptiveLabel = editor.lang.editorVoiceLabel;
+				 frameDescriptiveLabel = editor.lang.editorWysiwygModeVoiceLabel;
 
 			editor.on( 'editingBlockReady', function()
