Пример #1
0
		public ComboBoxDropDown (IRawElementProviderSimple provider) : base (provider)
		{
			this.provider = provider as IRawElementProviderFragmentRoot;
			if (this.provider == null)
				throw new ArgumentException ("Provider should be IRawElementProviderFragmentRoot");
			
			expandCollapseProvider = (IExpandCollapseProvider)provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id);
		}
Пример #2
0
		public Window (IRawElementProviderSimple provider) : base (provider)
		{
			if (provider != null)
				Role = Atk.Role.Frame;
			
			balloonWindow = (bool)(provider.GetPropertyValue (AutomationElementIdentifiers.IsNotifyIconProperty.Id) != null);
			rootProvider = (IRawElementProviderFragmentRoot) provider;
			
			if (rootProvider != null && balloonWindow) {
				Role = Atk.Role.Alert;
				Name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.HelpTextProperty.Id);
			}

			transformProvider = (ITransformProvider) provider.GetPatternProvider (TransformPatternIdentifiers.Pattern.Id);
			windowProvider = (IWindowProvider) provider.GetPatternProvider (WindowPatternIdentifiers.Pattern.Id);
		}
Пример #3
0
        public void GetDataGridAndFirstListItem(out IRawElementProviderFragmentRoot dataGrid,
                                                out IRawElementProviderFragment firstChild)
        {
            IRawElementProviderFragmentRoot rootProvider
                = (IRawElementProviderFragmentRoot)calendarProvider;

            // The datagrid is the MonthCalendar's first child
            dataGrid = (IRawElementProviderFragmentRoot)
                       rootProvider.Navigate(NavigateDirection.FirstChild);

            IRawElementProviderFragmentRoot child
                = (IRawElementProviderFragmentRoot)dataGrid.Navigate(
                      NavigateDirection.FirstChild);

            // Header is next, but skip that
            firstChild = (IRawElementProviderFragment)child.Navigate(
                NavigateDirection.NextSibling);
        }
Пример #4
0
        public Window(IRawElementProviderSimple provider) : base(provider)
        {
            if (provider != null)
            {
                Role = Atk.Role.Frame;
            }

            balloonWindow = (bool)(provider.GetPropertyValue(AutomationElementIdentifiers.IsNotifyIconProperty.Id) != null);
            rootProvider  = (IRawElementProviderFragmentRoot)provider;

            if (rootProvider != null && balloonWindow)
            {
                Role = Atk.Role.Alert;
                Name = (string)provider.GetPropertyValue(AutomationElementIdentifiers.HelpTextProperty.Id);
            }

            transformProvider = (ITransformProvider)provider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id);
            windowProvider    = (IWindowProvider)provider.GetPatternProvider(WindowPatternIdentifiers.Pattern.Id);
        }
Пример #5
0
        public void GetRuntimeIdTest()
        {
            using (Form f = new Form()) {
                IRawElementProviderFragmentRoot provider =
                    (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f);

                int[] runtimeId = provider.GetRuntimeId();
                Assert.IsNotNull(runtimeId, "Runtime ID is null");
                Assert.AreEqual(2, runtimeId.Length, "Runtime ID list is not the right size");

                Assert.AreEqual(AutomationInteropProvider.AppendRuntimeId,
                                runtimeId[0], "First item in runtime ID is not the AppendRuntimeId");

                int automation_id = (int)provider.GetPropertyValue(
                    AutomationElementIdentifiers.AutomationIdProperty.Id);
                Assert.AreEqual(automation_id, runtimeId[1],
                                "Second item in runtime ID is not the same as the control's AutomationId property");
            }
        }
Пример #6
0
        public void GetPatternProviderTest()
        {
            using (Form f = new Form()) {
                IRawElementProviderFragmentRoot provider =
                    (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f);

                object window =
                    provider.GetPatternProvider(WindowPatternIdentifiers.Pattern.Id);
                Assert.IsNotNull(window);
                Assert.IsTrue(window is IWindowProvider,
                              "IWindowProvider");

                object transform =
                    provider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id);
                Assert.IsNotNull(transform);
                Assert.IsTrue(transform is ITransformProvider,
                              "ITransformProvider");
            }
        }
        public void IScrollProviderHorizontalScrollPercentTest()
        {
            PrintPreviewControl printPreviewControl = new PrintPreviewControl();

            printPreviewControl.Size     = new System.Drawing.Size(100, 100);
            printPreviewControl.Document = new System.Drawing.Printing.PrintDocument();
            printPreviewControl.Zoom     = 0.1;

            IRawElementProviderFragmentRoot provider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(printPreviewControl);
//			IRawElementProviderSimple provider =
//				ProviderFactory.GetProvider (printPreviewControl);

            IScrollProvider scrollProvider = (IScrollProvider)
                                             provider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(scrollProvider,
                             "Not returning ScrollPatternIdentifiers.");
        }
        public void SplitterPanelITransformProviderRotateTest()
        {
            SplitContainer splitContainer = new SplitContainer();
            IRawElementProviderFragmentRoot rootProvider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(splitContainer);
            IRawElementProviderFragment childProvider =
                rootProvider.Navigate(NavigateDirection.FirstChild);

            ITransformProvider transformProvider = (ITransformProvider)
                                                   childProvider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(transformProvider,
                             "Not returning TransformPatternIdentifiers.");

            try {
                double degrees = 50;
                transformProvider.Rotate(degrees);
                Assert.Fail("InvalidOperationException not thrown");
            } catch (InvalidOperationException) { }
        }
Пример #9
0
        public void StatusBarPanelIGridItemProviderContainingGridTest()
        {
            StatusBar statusBar = new StatusBar();
            IRawElementProviderFragmentRoot rootProvider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar);

            statusBar.Panels.Add("Panel");
            IRawElementProviderFragment childProvider =
                rootProvider.Navigate(NavigateDirection.FirstChild);

            IGridItemProvider gridItemProvider = (IGridItemProvider)
                                                 childProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(gridItemProvider,
                             "Not returning GridItemPatternIdentifiers.");

            IRawElementProviderSimple parentProvider = (IRawElementProviderSimple)
                                                       childProvider.Navigate(NavigateDirection.Parent);
            IRawElementProviderSimple itemProvider = gridItemProvider.ContainingGrid;

            Assert.AreSame(parentProvider, itemProvider, "ContainingGrid value");
        }
Пример #10
0
        public void SetFocusTest()
        {
            using (Form f1 = new Form()) {
                using (Form f2 = new Form()) {
                    IRawElementProviderFragmentRoot p1 =
                        (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f1);
                    IRawElementProviderFragmentRoot p2 =
                        (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f2);

                    f1.Show();
                    f2.Show();

                    p1.SetFocus();
                    Assert.IsTrue(f1.Focused, "Form #1 is not focused after SetFocus ()");
                    Assert.IsFalse(f2.Focused, "Form #2 is focused after Form #2 SetFocus ()");

                    p2.SetFocus();
                    Assert.IsFalse(f1.Focused, "Form #1 is focused after Form #2 SetFocus ()");
                    Assert.IsTrue(f2.Focused, "Form #2 is not focused after SetFocus ()");
                }
            }
        }
Пример #11
0
        public void PatternsTest()
        {
            ListBox listbox = (ListBox)GetControlInstance();


            IRawElementProviderFragmentRoot rootProvider
                = (IRawElementProviderFragmentRoot)GetProviderFromControl(listbox);

            Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id),
                             "Selection Pattern IS supported");

            //Lets add a lot of items to show scrollbar
            for (int i = 0; i < 30; i++)
            {
                listbox.Items.Add(string.Format("dummy {0}", i));
            }

            Assert.IsNotNull(rootProvider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id),
                             "Scroll Pattern IS supported");
            listbox.Items.Clear();
            Assert.IsNull(rootProvider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id),
                          "Scroll Pattern IS NOT supported");
        }
Пример #12
0
        public void StatusBarPanelIGridItemProviderColumnTest()
        {
            StatusBar statusBar = new StatusBar();
            IRawElementProviderFragmentRoot rootProvider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar);

            StatusBarPanel panel = new StatusBarPanel();

            panel.Text = "Panel";
            statusBar.Panels.Add(panel);
            IRawElementProviderFragment childProvider =
                rootProvider.Navigate(NavigateDirection.FirstChild);

            IGridItemProvider gridItemProvider = (IGridItemProvider)
                                                 childProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(gridItemProvider,
                             "Not returning GridItemPatternIdentifiers.");

            int value = statusBar.Panels.IndexOf(panel);

            Assert.AreEqual(value, gridItemProvider.Column, "Column value");
        }
Пример #13
0
        public List(IRawElementProviderFragmentRoot provider) : base(provider)
        {
            this.provider = provider;

            selectionProvider = (ISelectionProvider)provider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id);
            if (selectionProvider == null)
            {
                throw new ArgumentException("List should always implement ISelectionProvider");
            }

            int controlTypeId = (int)Provider.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id);

            if (controlTypeId == ControlType.Spinner.Id)
            {
                Role = Atk.Role.SpinButton;
            }
            else
            {
                Role = Atk.Role.List;
            }

            selectionHelper = new SelectionProviderUserHelper(provider, selectionProvider);
        }
Пример #14
0
        public void IGridProviderGetItemTest()
        {
            StatusStrip statusStrip = new StatusStrip();
            IRawElementProviderFragmentRoot provider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(statusStrip);

            IGridProvider gridProvider = (IGridProvider)
                                         provider.GetPatternProvider(GridPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(gridProvider,
                             "Not returning GridPatternIdentifiers.");

            int rowValue    = 0;
            int columnValue = 0;

            statusStrip.Items.Add("Item");
            IRawElementProviderSimple panelProvider = (IRawElementProviderSimple)
                                                      provider.Navigate(NavigateDirection.FirstChild);
            IRawElementProviderSimple itemProvider =
                gridProvider.GetItem(rowValue, columnValue);

            Assert.AreSame(panelProvider, itemProvider, "GetItem method");

            try {
                rowValue     = gridProvider.RowCount;
                columnValue  = gridProvider.ColumnCount;
                itemProvider = gridProvider.GetItem(rowValue, columnValue);
                Assert.Fail("ArgumentOutOfRangeException not thrown.");
            } catch (ArgumentOutOfRangeException) { }

            try {
                rowValue     = -1;
                columnValue  = -1;
                itemProvider = gridProvider.GetItem(rowValue, columnValue);
                Assert.Fail("ArgumentOutOfRangeException not thrown.");
            } catch (ArgumentOutOfRangeException) { }
        }
Пример #15
0
        public void StatusBarPanelProviderPatternTest()
        {
            StatusBar statusBar = new StatusBar();
            IRawElementProviderFragmentRoot rootProvider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar);

            statusBar.Panels.Add("Panel");
            IRawElementProviderFragment childProvider =
                rootProvider.Navigate(NavigateDirection.FirstChild);

            object valueProvider =
                childProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id);

            Assert.IsNull(valueProvider,
                          "Should not return ValuePatternIdentifiers.");

            object gridItemProvider =
                childProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(gridItemProvider,
                             "Not returning GridItemPatternIdentifiers.");
            Assert.IsTrue(gridItemProvider is IGridItemProvider,
                          "Not returning GridItemPatternIdentifiers.");
        }
Пример #16
0
        public void CollectionTest()
        {
            ComboBox combobox = GetComboBox();

            IRawElementProviderFragmentRoot rootProvider
                = (IRawElementProviderFragmentRoot)GetProviderFromControl(combobox);

            IRawElementProviderFragment list
                = rootProvider.Navigate(NavigateDirection.FirstChild);

            while (list != null)
            {
                if ((int)list.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.List.Id)
                {
                    break;
                }

                list = list.Navigate(NavigateDirection.NextSibling);
            }

            Assert.IsNotNull(list, "We must have a List");

            IRawElementProviderFragment item0
                = list.Navigate(NavigateDirection.FirstChild);

            Assert.IsNull(item0, "We shouldn't have children in List");

            //Add item 0. (Items.Add)

            bridge.ResetEventLists();

            combobox.Items.Add("Item 0");
            StructureChangedEventTuple tuple
                = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildAdded);

            Assert.IsNotNull(tuple, "We should have tuple");
            Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot,
                            list,
                            "Added item.FragmentRoot != list");
            item0 = list.Navigate(NavigateDirection.FirstChild);
            Assert.IsNotNull(item0, "We should have children in List");

            //Add item 1. (Items.Add)

            bridge.ResetEventLists();
            combobox.Items.Add("Item 1");
            tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildAdded);
            Assert.IsNotNull(tuple, "We should have tuple");
            Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot,
                            list,
                            "Added item.FragmentRoot != list");
            IRawElementProviderFragment item1
                = item0.Navigate(NavigateDirection.NextSibling);

            Assert.IsNotNull(item1, "We should have children in List");

            Assert.AreEqual(item1.Navigate(NavigateDirection.PreviousSibling),
                            item0,
                            "Navigation invalid: item1 -> item0");
            Assert.AreEqual(item0.Navigate(NavigateDirection.NextSibling),
                            item1,
                            "Navigation invalid: item1 <- item0");

            //Remove item 0 (Items.RemoveAt)

            bridge.ResetEventLists();
            combobox.Items.RemoveAt(0);

            tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildRemoved);
            Assert.IsNotNull(tuple, "We should have tuple.");
            Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot,
                            list,
                            "Removed item.FragmentRoot != list");
            Assert.IsNotNull(list.Navigate(NavigateDirection.FirstChild),
                             "We should STILL have children in List");
            Assert.AreEqual(list.Navigate(NavigateDirection.FirstChild),
                            item1,
                            "Navigation invalid: parent.FirstChild != item1");

            //Add item 2 y 3 (Items.AddRange)

            bridge.ResetEventLists();
            combobox.Items.AddRange(new object [] { "Item 2", "Item 3" });

            Assert.AreEqual(2,
                            bridge.GetStructureChangedEventCount(StructureChangeType.ChildAdded),
                            "We should have two events");
            StructureChangedEventTuple tuple0 = bridge.GetStructureChangedEventAt(0,
                                                                                  StructureChangeType.ChildAdded);

            Assert.IsNotNull(tuple0, "We should have tuple0.");
            StructureChangedEventTuple tuple1 = bridge.GetStructureChangedEventAt(1,
                                                                                  StructureChangeType.ChildAdded);

            Assert.IsNotNull(tuple1, "We should have tuple1.");
            Assert.AreEqual(((IRawElementProviderFragment)tuple0.provider).FragmentRoot,
                            list,
                            "Added item2.FragmentRoot != list");
            Assert.AreEqual(((IRawElementProviderFragment)tuple1.provider).FragmentRoot,
                            list,
                            "Added item3.FragmentRoot != list");

            IRawElementProviderFragment item2
                = item1.Navigate(NavigateDirection.NextSibling);

            Assert.IsNotNull(item2, "We should have children in List");
            IRawElementProviderFragment item3
                = item2.Navigate(NavigateDirection.NextSibling);

            Assert.AreEqual(item3.Navigate(NavigateDirection.PreviousSibling),
                            item2,
                            "Navigation invalid: item2 -> item3");
            Assert.AreEqual(item2.Navigate(NavigateDirection.NextSibling),
                            item3,
                            "Navigation invalid: item2 <- item3");

            // We have: "Item1", "Item2" "Item3". Lets replace "Item2" with "Item4"
            bridge.ResetEventLists();

            combobox.Items [1] = "Item4";

            Assert.AreEqual(1,
                            bridge.GetStructureChangedEventCount(StructureChangeType.ChildRemoved),
                            "We should have 1 event");
            Assert.AreEqual(1,
                            bridge.GetStructureChangedEventCount(StructureChangeType.ChildAdded),
                            "We should have 1 event");
            StructureChangedEventTuple tupleReplacedRemoved
                = bridge.GetStructureChangedEventAt(0,
                                                    StructureChangeType.ChildRemoved);

            Assert.IsNotNull(tupleReplacedRemoved, "Replaced: Removed tupple shouldn't be null");
            Assert.AreEqual(tupleReplacedRemoved.provider,
                            item2,
                            "Removed item should be Item2");
            StructureChangedEventTuple tupleReplacedAdded
                = bridge.GetStructureChangedEventAt(0,
                                                    StructureChangeType.ChildAdded);

            Assert.IsNotNull(tupleReplacedAdded, "Replaced: Added tupple shouldn't be null");
            Assert.AreEqual(tupleReplacedAdded.provider,              //Notice that elements ARE NOT SORTED
                            item3.Navigate(NavigateDirection.NextSibling),
                            "Navigation failed: item3 -> item4");
            Assert.AreEqual(((IRawElementProviderFragment)tupleReplacedAdded.provider).Navigate(NavigateDirection.PreviousSibling),
                            item3,
                            "Navigation failed: item3 <- item4");

            TestChildPatterns(rootProvider);

            // Lets clear all!

            bridge.ResetEventLists();
            combobox.Items.Clear();

            Assert.AreEqual(1,
                            bridge.GetStructureChangedEventCount(StructureChangeType.ChildrenBulkRemoved),
                            "We should have 1 event");
            Assert.IsNull(list.Navigate(NavigateDirection.FirstChild),
                          "We shouldn't have children in List");
        }
Пример #17
0
        public void IScrollProviderTest()
        {
            TextBox textBox;
            IRawElementProviderSimple provider;

            GetProviderAndControl(out provider, out textBox);

            textBox.Size = new System.Drawing.Size(30, 30);
            Form.Controls.Add(textBox);
            textBox.ScrollBars = ScrollBars.Both;

            IRawElementProviderFragmentRoot root_prov
                = (IRawElementProviderFragmentRoot)provider;

            // Case #1: Edit with no text
            textBox.Text      = String.Empty;
            textBox.Multiline = false;

            IScrollProvider scroll = provider.GetPatternProvider(
                ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider;

            Assert.IsNull(scroll, "Edit mode with no text incorrectly supports ScrollProvider");

            // Case #2: Edit with large amount of text
            textBox.Text      = TEST_MESSAGE;
            textBox.Multiline = false;

            scroll = provider.GetPatternProvider(
                ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider;
            Assert.IsNull(scroll, "Edit mode with text incorrectly supports ScrollProvider");

            // Case #3: Document with no text
            textBox.Text      = String.Empty;
            textBox.Multiline = true;

            scroll = provider.GetPatternProvider(
                ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider;
            Assert.IsNull(scroll, "Document mode with no text incorrectly supports ScrollProvider");

            // Case #4: Document with large amount of text
            textBox.Text      = TEST_MESSAGE;
            textBox.Multiline = true;

            scroll = provider.GetPatternProvider(
                ScrollPatternIdentifiers.Pattern.Id) as IScrollProvider;
            Assert.IsNotNull(scroll, "Document mode with text doesn't support ScrollProvider");

            // Test that an event is fired when we scroll vertically
            bridge.ResetEventLists();
            scroll.Scroll(ScrollAmount.NoAmount, ScrollAmount.LargeIncrement);
            Assert.AreEqual(1, bridge.AutomationEvents.Count,
                            "EventCount after scrolling vertically");

            // We can't scroll horizontally, so verify that no event is fired
            bridge.ResetEventLists();
            scroll.Scroll(ScrollAmount.LargeIncrement, ScrollAmount.NoAmount);
            Assert.AreEqual(0, bridge.AutomationEvents.Count,
                            "EventCount after scrolling horizontally");

            IRawElementProviderFragment child;

            child = root_prov.Navigate(NavigateDirection.FirstChild);

            Assert.IsNotNull(child, "textBox has no children");
            TestProperty(child, AutomationElementIdentifiers.ControlTypeProperty,
                         ControlType.ScrollBar.Id);

            child = child.Navigate(NavigateDirection.NextSibling);
            Assert.IsNull(child, "textBox has more than one scrollbar");
        }
Пример #18
0
 public CustomProviderBase(IRawElementProviderFragmentRoot root)
 {
     this.Root = root;
 }
Пример #19
0
        public void PatternsTest()
        {
            ListBox listbox = new ListBox();

            for (int i = 0; i < 15; i++)
            {
                listbox.Items.Add(i);
            }

            IRawElementProviderFragmentRoot listboxProvider
                = (IRawElementProviderFragmentRoot)GetProviderFromControl(listbox);

            IRawElementProviderFragment scrollBarProvider = null;
            IRawElementProviderFragment child             =
                listboxProvider.Navigate(NavigateDirection.FirstChild);

            while (child != null)
            {
                if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.ScrollBar.Id)
                {
                    scrollBarProvider = child;
                    break;
                }
                child = child.Navigate(NavigateDirection.NextSibling);
            }

            Assert.IsNotNull(scrollBarProvider, "Should be scrollbar");

            //LAMESPEC: This SHOULD BE Assert.IsFalse
            Assert.IsTrue((bool)child.GetPropertyValue(AutomationElementIdentifiers.IsRangeValuePatternAvailableProperty.Id),
                          "Should support RangeValue Pattern");

            //Lets test buttons!
            IRawElementProviderFragment buttonProvider
                = scrollBarProvider.Navigate(NavigateDirection.FirstChild);

            while (buttonProvider != null)
            {
                if ((int)buttonProvider.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.Button.Id)
                {
                    break;
                }
                buttonProvider = buttonProvider.Navigate(NavigateDirection.NextSibling);
            }

            Assert.IsNotNull(buttonProvider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id),
                             "Invoke Pattern IS supported");


            //Testing all other patterns
            Assert.IsNull(scrollBarProvider.GetPatternProvider(DockPatternIdentifiers.Pattern.Id),
                          "Dock NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id),
                          "ExpandCollapse NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(GridPatternIdentifiers.Pattern.Id),
                          "Grid NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id),
                          "GridItem NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id),
                          "Invoke NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(MultipleViewPatternIdentifiers.Pattern.Id),
                          "MultipleView NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(ScrollPatternIdentifiers.Pattern.Id),
                          "Scroll NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(ScrollItemPatternIdentifiers.Pattern.Id),
                          "ScrollItem NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id),
                          "Selection NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id),
                          "SelectionItem NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(TablePatternIdentifiers.Pattern.Id),
                          "Table NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(TableItemPatternIdentifiers.Pattern.Id),
                          "TableItem NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(TogglePatternIdentifiers.Pattern.Id),
                          "Toggle NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(TransformPatternIdentifiers.Pattern.Id),
                          "Transform NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id),
                          "Value NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(WindowPatternIdentifiers.Pattern.Id),
                          "Window NOT supported");
            Assert.IsNull(scrollBarProvider.GetPatternProvider(TextPatternIdentifiers.Pattern.Id),
                          "Text NOT supported");
        }
Пример #20
0
		private int ChildrenCount (IRawElementProviderFragmentRoot rootProvider)
		{
			int children = 0;
			
			IRawElementProviderFragment child 
				= rootProvider.Navigate (NavigateDirection.FirstChild);
			while (child != null) {
				children++;
				child = child.Navigate (NavigateDirection.NextSibling);
			}

			return children;
		}
Пример #21
0
        private IRawElementProviderFragmentRoot ColumnCellTest(SWF.DataGridViewColumn column,
                                                               SWF.DataGridViewCell cell,
                                                               bool cellChildrenExpected,
                                                               SWF.DataGridViewCell newCell)
        {
            SWF.DataGridView datagridview = GetControlInstance() as SWF.DataGridView;
            datagridview.Size = new Size(200, 200);
            datagridview.AllowUserToAddRows = false;

            datagridview.Columns.Add(column);

            IRawElementProviderFragmentRoot provider
                = GetProviderFromControl(datagridview) as IRawElementProviderFragmentRoot;

            Assert.IsNotNull(provider, "Missing DataGridView provider");

            IRawElementProviderFragmentRoot header = null;
            IRawElementProviderFragment     child  = provider.Navigate(NavigateDirection.FirstChild);

            Assert.IsNotNull(child, "FirstChild is null");
            int childCount = 0;

            while (child != null)
            {
                childCount++;
                if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.Header.Id)
                {
                    header = child as IRawElementProviderFragmentRoot;
                }
                child = child.Navigate(NavigateDirection.NextSibling);
            }
            Assert.IsNotNull(header, "Header is missing");
            Assert.AreEqual(1, childCount, "Children (Header)");

            // Exposes BNC #478840
            TestChildPatterns(header);

            SWF.DataGridViewRow row = new SWF.DataGridViewRow();
            row.Cells.Add(cell);
            datagridview.Rows.Add(row);

            IRawElementProviderFragment dataItem = null;

            childCount = 0;
            child      = provider.Navigate(NavigateDirection.FirstChild);
            while (child != null)
            {
                childCount++;
                if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.DataItem.Id)
                {
                    dataItem = child;
                }
                child = child.Navigate(NavigateDirection.NextSibling);
            }
            Assert.IsNotNull(dataItem, "DataItem is missing");
            Assert.AreEqual(2, childCount, "Children (Header/DataItem)");

            IRawElementProviderFragment buttonChild = dataItem.Navigate(NavigateDirection.FirstChild);

            Assert.IsNotNull(buttonChild, "DataItem.Child missing");
            TestPatterns(buttonChild);

            Assert.AreEqual(dataItem,
                            buttonChild.Navigate(NavigateDirection.Parent),
                            "DataItem != ButtonChild.Parent");

            IGridItemProvider gridItemProvider
                = (IGridItemProvider)buttonChild.GetPatternProvider(GridItemPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(gridItemProvider,
                             "Child should support IGridItemProvider");

            Assert.IsNotNull(gridItemProvider.ContainingGrid,
                             "ContainingGrid should not be null");

            // http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.igriditemprovider.containinggrid.aspx
            Assert.IsNotNull(gridItemProvider.ContainingGrid.GetPatternProvider(GridPatternIdentifiers.Pattern.Id),
                             "ContainingGrid must implement GridPatternProvider");

            childCount = 0;
            child      = buttonChild.Navigate(NavigateDirection.FirstChild);
            while (child != null)
            {
                childCount++;
                child = child.Navigate(NavigateDirection.NextSibling);
            }
            if (!cellChildrenExpected)
            {
                Assert.AreEqual(0, childCount, "No children expected.");
            }
            else
            {
                Assert.Greater(childCount, 0, "Children expected.");
            }

            TestChildPatterns(provider);

            if (newCell != null)
            {
                // Lets add a new row, to make sure everything is ok.
                SWF.DataGridViewRow newRow = new SWF.DataGridViewRow();
                newRow.Cells.Add(newCell);

                datagridview.Rows.Add(newRow);

                TestChildPatterns(provider);
            }

            // Exposes BNC #513476
            cell.ReadOnly = false;
            Assert.IsTrue((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id));

            cell.ReadOnly = true;
            Assert.IsTrue((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id));
            cell.ReadOnly = false;

            datagridview.Enabled = false;
            Assert.IsFalse((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id));

            datagridview.Enabled = true;
            Assert.IsTrue((bool)dataItem.GetPropertyValue(AutomationElementIdentifiers.IsEnabledProperty.Id));

            return(provider);
        }
Пример #22
0
        public void StatusBarPanelNamePropertyChangedEventTest()
        {
            StatusBar statusBar = new StatusBar();
            IRawElementProviderFragmentRoot rootProvider =
                (IRawElementProviderFragmentRoot)GetProviderFromControl(statusBar);

            string         panelName = "original panel name";
            StatusBarPanel panel     = new StatusBarPanel();

            panel.Text = panelName;

            statusBar.Panels.Add(panel);
            IRawElementProviderFragment childProvider =
                rootProvider.Navigate(NavigateDirection.FirstChild);

            TestProperty(childProvider,
                         AutomationElementIdentifiers.NameProperty,
                         panelName);

            bridge.ResetEventLists();

            string newPanelName = "new panel name";

            panel.Text = newPanelName;

            TestProperty(childProvider,
                         AutomationElementIdentifiers.NameProperty,
                         newPanelName);

            Assert.AreEqual(1,
                            bridge.AutomationPropertyChangedEvents.Count,
                            "Name property change event expected");
            AutomationPropertyChangedEventTuple eventTuple =
                bridge.AutomationPropertyChangedEvents [0];

            Assert.AreEqual(childProvider,
                            eventTuple.element,
                            "event sender");
            Assert.AreEqual(AutomationElementIdentifiers.NameProperty,
                            eventTuple.e.Property,
                            "event property");
            Assert.AreEqual(newPanelName,
                            eventTuple.e.NewValue,
                            "event new value");
            Assert.AreEqual(panelName,
                            eventTuple.e.OldValue,
                            "event old value");

            Assert.AreEqual(1,
                            bridge.AutomationEvents.Count,
                            "TextPattern text change event expected");
            AutomationEventTuple eventTuple2 =
                bridge.AutomationEvents [0];

            Assert.AreEqual(childProvider,
                            eventTuple2.provider,
                            "event sender");
            Assert.AreEqual(TextPatternIdentifiers.TextChangedEvent,
                            eventTuple2.eventId,
                            "event id");
            Assert.AreEqual(TextPatternIdentifiers.TextChangedEvent,
                            eventTuple2.e.EventId,
                            "event id");
        }
Пример #23
0
		public CustomProviderFragment (IRawElementProviderFragmentRoot root)
			: base (root)
		{
			ClickCount = 0;
		}
Пример #24
0
		public CustomProviderBase (IRawElementProviderFragmentRoot root)
		{
			this.Root = root;
		}
Пример #25
0
		private void TestFocusInDataItemChildren (ListView listview, 
		                                          int index, 
		                                          IRawElementProviderFragmentRoot dataItemRoot,
		                                          bool focused)
		{
			AutomationPropertyChangedEventTuple tuple 
				= bridge.GetAutomationPropertyEventFrom (dataItemRoot, 
				                                         AutomationElementIdentifiers.HasKeyboardFocusProperty.Id);
			Assert.AreEqual (focused, 
			                 (bool) tuple.e.NewValue,
			                 "DataItem Focused value.");

			IRawElementProviderFragment child = dataItemRoot.Navigate (NavigateDirection.FirstChild);
			Assert.IsNotNull (child, "Child should not be null");
			int subItem = 0;
			while (child != null) {
				bool hasfocus 
					= (bool) child.GetPropertyValue (AutomationElementIdentifiers.HasKeyboardFocusProperty.Id);
				if ((int) child.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id)
				    == ControlType.Edit.Id) {
					string name
						= (string) child.GetPropertyValue (AutomationElementIdentifiers.NameProperty.Id);
					if (!focused)
						Assert.IsFalse (hasfocus,
						                string.Format ("{0}.{1} Name: '{0}'",
						                               index, subItem, name));
					else {
						if (listview.FullRowSelect
						    || GetIndexFromName (listview.Items [index], name) == 0)
							Assert.AreEqual (focused,
							                 hasfocus,
							                 string.Format ("{0}.{1} Name: '{0}'",
							                                index, subItem, name));
						else
							Assert.AreNotEqual (focused,
							                    hasfocus,
							                    string.Format ("{0}.{1} Name: '{0}'",
							                                   index, subItem, name));
					}
					subItem++;
				} else 
					// CheckBox is focused when fullrowSelected and is focused
					// is expected
					Assert.AreEqual (listview.FullRowSelect && focused, 
					                 hasfocus,
					                 string.Format ("{0}.CheckBox Focus should NOT be set", index));
				child = child.Navigate (NavigateDirection.NextSibling);
			}
		}
Пример #26
0
		public void Bug468271Test ()
		{
			// NOTE: This test only exposes bug in Provider side.
			// ListView_details: "table cell" isn't accessible without "focused"
			ListView listview = new ListView ();
			listview.View = View.Details;
			listview.CheckBoxes = true;
			listview.GridLines = true;
			listview.Sorting = SortOrder.Ascending;
			listview.Dock = DockStyle.Top;
			listview.Width = 350;
			listview.Height = 260;

			listview.Columns.Add ("Column1", 200, HorizontalAlignment.Left);
			listview.Columns.Add ("Column2", 200, HorizontalAlignment.Left);
			listview.Columns.Add ("Column3", 200, HorizontalAlignment.Left);

			for (int index = 0; index < 3; index++) {
				ListViewItem item = new ListViewItem (string.Format ("Item:{0}", index));
				item.SubItems.Add (index.ToString ());
				item.SubItems.Add ((index+10).ToString ());
				listview.Items.Add (item);
			}

			// We have the following table:
			// "Column1"         | "Column2" | "Column3"
			// ------------------|-----------|----------
			// checkbox, "Item0" | "0"       | "10"
			// checkbox, "Item1" | "1"       | "11"
			// checkbox, "Item2" | "2"       | "12"

			// ListViewUIATree:
			// - Header
			//   - HeaderItem "Column1"
			//   - HeaderItem "Column2"
			//   - HeaderItem "Column3"
			// - DataItem "Item0"
			//   - CheckBox
			//   - "Item0"
			//   - "0"
			//   - "10"
			// - DataItem "Item1"
			//   - CheckBox
			//   - "Item1"
			//   - "1"
			//   - "11"
			// - DataItem "Item2"
			//   - CheckBox
			//   - "Item2"
			//   - "2"
			//   - "12"
			IRawElementProviderFragmentRoot root
				= (IRawElementProviderFragmentRoot) GetProviderFromControl (listview);
			Assert.IsNotNull (root, "Missing ListViewProvider");
			IRawElementProviderFragmentRoot []dataItems = new IRawElementProviderFragmentRoot [3];
			IRawElementProviderFragment child = root.Navigate (NavigateDirection.FirstChild);
			Assert.IsNotNull (child, "Missing child");
			
			int dataItem = 0;
			while (child != null) {				
				if ((int) child.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id)
				    == ControlType.DataItem.Id) {
					dataItems [dataItem] = (IRawElementProviderFragmentRoot) child;
					dataItem++;
				}
				child = child.Navigate (NavigateDirection.NextSibling);
			}
			Assert.AreEqual (dataItems.Length, dataItem, "Count != DataItems");

			// You *can* only focus 1 item, so, focusing a different item
			// will unfocus previous item and focus new item.

			// listview.FullRowSelect = false: first subitem will is selected.
			bridge.ResetEventLists ();
			listview.Focus ();
			listview.Items [0].Focused = true;
			TestFocusInDataItemChildren (listview, 0, dataItems [0], true);

			bridge.ResetEventLists ();
			listview.Items [1].Focused = true;
			TestFocusInDataItemChildren (listview, 1, dataItems [1], true);
			TestFocusInDataItemChildren (listview, 0, dataItems [0], false);

			bridge.ResetEventLists ();
			listview.Items [2].Focused = true;
			TestFocusInDataItemChildren (listview, 2, dataItems [2], true);			
			TestFocusInDataItemChildren (listview, 1, dataItems [1], false);
		}
Пример #27
0
        public void NavigationTest()
        {
            IRawElementProviderFragmentRoot rootProvider
                = (IRawElementProviderFragmentRoot)calendarProvider;

            IRawElementProviderSimple child
                = rootProvider.Navigate(NavigateDirection.FirstChild);

            Assert.IsNotNull(child, "MonthCalendar has no children");

            TestProperty(child,
                         AutomationElementIdentifiers.ControlTypeProperty,
                         ControlType.DataGrid.Id);
            TestProperty(child,
                         AutomationElementIdentifiers.LocalizedControlTypeProperty,
                         "data grid");

            IRawElementProviderSimple header
                = ((IRawElementProviderFragmentRoot)child).Navigate(
                      NavigateDirection.FirstChild);

            Assert.IsNotNull(header, "MonthCalendarDataGrid has no children");

            TestProperty(header,
                         AutomationElementIdentifiers.ControlTypeProperty,
                         ControlType.Header.Id);
            TestProperty(header,
                         AutomationElementIdentifiers.LocalizedControlTypeProperty,
                         "header");

            int numChildren = 0;

            IRawElementProviderSimple headerItem
                = ((IRawElementProviderFragmentRoot)header).Navigate(
                      NavigateDirection.FirstChild);

            while (headerItem != null)
            {
                TestHeaderItem(headerItem, header, numChildren);

                numChildren++;
                headerItem = ((IRawElementProviderFragment)headerItem)
                             .Navigate(NavigateDirection.NextSibling);
            }

            Assert.AreEqual(daysInWeek, numChildren, "Not returning the correct number of days in a week");

            int numItems   = 0;
            int numButtons = 0;

            IRawElementProviderFragmentRoot dataGridProvider;
            IRawElementProviderFragment     childItem;

            GetDataGridAndFirstListItem(out dataGridProvider, out childItem);

            List <IRawElementProviderSimple> buttons
                = new List <IRawElementProviderSimple> ();

            do
            {
                int controlType = (int)childItem.GetPropertyValue(
                    AutomationElementIdentifiers.ControlTypeProperty.Id);
                if (controlType == ControlType.ListItem.Id)
                {
                    numItems++;
                }
                else if (controlType == ControlType.Button.Id)
                {
                    numButtons++;
                    buttons.Add(childItem);
                }

                childItem = childItem.Navigate(NavigateDirection.NextSibling);
            } while (childItem != null);

            SelectionRange range = calendar.GetDisplayRange(false);

            Assert.AreEqual((range.End - range.Start).Days + 1, numItems,
                            "Don't have the correct number of list items");

            Assert.AreEqual(2, numButtons,
                            "Don't have the correct number of buttons");

            IRawElementProviderSimple backButton = buttons[0];
            IInvokeProvider           invokeProvider
                = backButton.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id)
                  as IInvokeProvider;

            Assert.IsNotNull(invokeProvider,
                             "Button doesn't implement IInvoke");

            calendar.SelectionStart = new DateTime(2000, 1, 1);
            invokeProvider.Invoke();

            Assert.AreEqual(new DateTime(1999, 12, 1), calendar.SelectionStart,
                            "Calendar date is incorrect after going backward");
        }
 protected BaseFragmentProvider(IRawElementProviderFragment parent, IRawElementProviderFragmentRoot fragmentRoot)
 {
     this.parent = parent;
     this.fragmentRoot = fragmentRoot;
 }
Пример #29
0
        public void ComboBoxTest()
        {
            SWF.DataGridViewComboBoxColumn column = new SWF.DataGridViewComboBoxColumn();
            column.HeaderText = "CheckBox Column";
            column.Items.AddRange("1", "2", "3", "4", "5");

            SWF.DataGridViewComboBoxCell cell    = new SWF.DataGridViewComboBoxCell();
            SWF.DataGridViewComboBoxCell newCell = new SWF.DataGridViewComboBoxCell();

            IRawElementProviderFragmentRoot provider
                = ColumnCellTest(column,
                                 cell,
                                 true,
                                 newCell);

            // Lets test navigation.

            IRawElementProviderFragment child = provider.Navigate(NavigateDirection.FirstChild);

            while (child != null)
            {
                if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.DataItem.Id)
                {
                    break;
                }
                child = child.Navigate(NavigateDirection.NextSibling);
            }

            // Lets search our ComboBox
            child = child.Navigate(NavigateDirection.FirstChild);
            while (child != null)
            {
                if ((int)child.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
                    == ControlType.ComboBox.Id)
                {
                    break;
                }
                child = child.Navigate(NavigateDirection.NextSibling);
            }

            // ComboBox should have 2 children. Button and ListBox
            int children = 0;

            IRawElementProviderFragmentRoot comboboxProvider = child as IRawElementProviderFragmentRoot;

            child = child.Navigate(NavigateDirection.FirstChild);
            while (child != null)
            {
                children++;
                child = child.Navigate(NavigateDirection.NextSibling);
            }
            Assert.AreEqual(2, children, "ComboBox.Children");

            // Exposes #493520
            // cell should be the first combobox
            cell.Value = "1";
            ISelectionProvider selectionProvider
                = (ISelectionProvider)comboboxProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id);

            Assert.IsNotNull(selectionProvider, "Selection Provider missing");
            IRawElementProviderSimple [] selection = selectionProvider.GetSelection();
            Assert.IsNotNull(selection, "Selection is null");

            foreach (IRawElementProviderSimple selected in selection)
            {
                Assert.IsNotNull(selected, "Selected is null");
            }

            cell.Value = null;
            selection  = selectionProvider.GetSelection();
            Assert.IsNotNull(selection, "Selection is null");

            foreach (IRawElementProviderSimple selected in selection)
            {
                Assert.IsNotNull(selected, "Selected is null");
            }
        }
Пример #30
0
		public ClientElement (ClientAutomationSource source, IRawElementProviderSimple provider)
		{
			ArgumentCheck.NotNull (source, "source");
			ArgumentCheck.NotNull (provider, "provider");

			this.source = source;
			this.provider = provider;
			providerFragment = provider as IRawElementProviderFragment;
			providerFragmentRoot = provider as IRawElementProviderFragmentRoot;
		}
Пример #31
0
		public void GetDataGridAndFirstListItem (out IRawElementProviderFragmentRoot dataGrid,
		                                         out IRawElementProviderFragment firstChild)
		{
			IRawElementProviderFragmentRoot rootProvider
				= (IRawElementProviderFragmentRoot) calendarProvider;
			
			// The datagrid is the MonthCalendar's first child
			dataGrid = (IRawElementProviderFragmentRoot)
				  rootProvider.Navigate (NavigateDirection.FirstChild);
			
			IRawElementProviderFragmentRoot child
				= (IRawElementProviderFragmentRoot) dataGrid.Navigate (
					NavigateDirection.FirstChild);

			// Header is next, but skip that
			firstChild = (IRawElementProviderFragment) child.Navigate (
					NavigateDirection.NextSibling);
		}
Пример #32
0
        public void InvisibleVisibleTest1()
        {
            // Similar to InvisibleVisibleTest but with invisible items
            // before calling Show and getting the provider.
            IRawElementProviderFragmentRoot rootProvider     = null;
            IRawElementProviderSimple       buttonProvider   = null;
            IRawElementProviderSimple       checkBoxProvider = null;
            Button button = null;

            Form f = new Form();

            f.Size = new System.Drawing.Size(400, 400);
            f.Show();

            // Adding invisible button
            button         = new Button();
            button.Text    = "button";
            button.Visible = false;
            f.Controls.Add(button);

            // Adding a visible checkbox
            CheckBox checkbox = new CheckBox();

            checkbox.Text    = "checkbox";
            checkbox.Visible = true;
            f.Controls.Add(checkbox);

            f.Show();

            // Empty form NO CHILDREN
            rootProvider
                = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f);

            Assert.AreEqual(1,
                            ChildrenCount(rootProvider),
                            "1 children = checkbox");

            // Changing visibility
            bridge.ResetEventLists();
            button.Visible = true;
            Assert.AreEqual(2,
                            ChildrenCount(rootProvider),
                            "2 children");
            buttonProvider
                = ProviderFactory.FindProvider(button);
            Assert.IsNotNull(buttonProvider, "ButtonProvider missing");
            Assert.IsNotNull(bridge.GetStructureChangedEventFrom(buttonProvider,
                                                                 StructureChangeType.ChildAdded),
                             "Button. StructureChangeType.ChildAdded event missing");
            buttonProvider = null;

            bridge.ResetEventLists();
            button.Visible = false;
            Assert.AreEqual(1,
                            ChildrenCount(rootProvider),
                            "1 child = checkbox");
            Assert.AreEqual(ControlType.CheckBox.Id,
                            (int)rootProvider.Navigate(NavigateDirection.FirstChild).GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id),
                            "CheckBox is the only child allowed");

            buttonProvider
                = ProviderFactory.FindProvider(button);
            Assert.IsNull(buttonProvider, "ButtonProvider missing");
            Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider,
                                                              StructureChangeType.ChildAdded),
                          "Button. StructureChangeType.ChildAdded event missing");
            buttonProvider = null;

            // We are already invisible, we don't need to raise any event
            bridge.ResetEventLists();
            f.Controls.Remove(button);
            Assert.AreEqual(1,
                            ChildrenCount(rootProvider),
                            "1 child = checkbox");
            Assert.AreEqual(ControlType.CheckBox.Id,
                            (int)rootProvider.Navigate(NavigateDirection.FirstChild).GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id),
                            "CheckBox is the only child allowed");

            buttonProvider
                = ProviderFactory.FindProvider(button);
            Assert.IsNull(buttonProvider, "ButtonProvider missing");
            Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider,
                                                              StructureChangeType.ChildAdded),
                          "Button. StructureChangeType.ChildAdded event missing");

            // Set checkbox invisible
            checkBoxProvider = ProviderFactory.FindProvider(checkbox);
            bridge.ResetEventLists();
            checkbox.Visible = false;
            Assert.AreEqual(0,
                            ChildrenCount(rootProvider),
                            "No children");
            Assert.IsNotNull(bridge.GetStructureChangedEventFrom(checkBoxProvider,
                                                                 StructureChangeType.ChildRemoved),
                             "CheckBox. StructureChangeType.ChildRemoved event missing");

            f.Dispose();
        }
Пример #33
0
        // We need to treat MSAA's FOCUS winevents differently depending on the OBJID -
        // OBJID_CLIENT gets routed to the proxies; _MENU and _SYSMENU get speical treatment.
        private AutomationElement GetFocusedElementFromWinEvent(IntPtr hwnd, int idObject, int idChild)
        {
            try
            {
                IRawElementProviderSimple provider = null;
                // These are the only object types that oleacc proxies allow to take focus.
                // (Native IAccessibles can send focus for other custom OBJID valus, but those are no use
                // to us.)
                // Try and get providers for them ourself - if we don't get anything, then
                // defer to core to get the element for the HWND itself.
                if (idObject == UnsafeNativeMethods.OBJID_CLIENT)
                {
                    // regular focus - pass it off to a proxy...
                    provider = ProxyManager.ProxyProviderFromHwnd(NativeMethods.HWND.Cast(hwnd), idChild, UnsafeNativeMethods.OBJID_CLIENT);
                }
                else if (idObject == UnsafeNativeMethods.OBJID_MENU)
                {
                    // menubar focus - see if there's a menubar pseudo-proxy registered...
                    ClientSideProviderFactoryCallback factory = ProxyManager.NonClientMenuBarProxyFactory;
                    if (factory != null)
                    {
                        provider = factory(hwnd, idChild, idObject);
                    }
                }
                else if (idObject == UnsafeNativeMethods.OBJID_SYSMENU)
                {
                    // system menu box focus - see if there's a sysmenu pseudo-proxy registered...
                    ClientSideProviderFactoryCallback factory = ProxyManager.NonClientSysMenuProxyFactory;
                    if (factory != null)
                    {
                        provider = factory(hwnd, idChild, idObject);
                    }
                }
                else if (idObject <= 0)
                {
                    return(null);
                }
                else
                {
                    // This covers OBJID_CLIENT and custom OBJID cases.
                    // Pass it to the proxy manager: most proxies will just handle OBJID_CLIENT,
                    // but the MSAA proxy can potentally handle other OBJID values.
                    provider = ProxyManager.ProxyProviderFromHwnd(NativeMethods.HWND.Cast(hwnd), idChild, idObject);
                }

                if (provider != null)
                {
                    // Ask the fragment root if any of its children really have the focus
                    IRawElementProviderFragmentRoot fragment = provider as IRawElementProviderFragmentRoot;
                    if (fragment != null)
                    {
                        // if we get back something that is different than what we started with and its not null
                        // use that instead.  This is here to get the subset link in the listview but could be usefull
                        // for listview subitems as well.
                        IRawElementProviderSimple realFocus = fragment.GetFocus();
                        if (realFocus != null && !Object.ReferenceEquals(realFocus, provider))
                        {
                            provider = realFocus;
                        }
                    }

                    SafeNodeHandle hnode = UiaCoreApi.UiaNodeFromProvider(provider);
                    return(AutomationElement.Wrap(hnode));
                }
                else
                {
                    // Didn't find a proxy to handle this hwnd - pass off to core...
                    return(AutomationElement.FromHandle(hwnd));
                }
            }
            catch (Exception e)
            {
                if (Misc.IsCriticalException(e))
                {
                    throw;
                }

                return(null);
            }
        }
Пример #34
0
        public void InvisibleVisibleTest()
        {
            IRawElementProviderFragmentRoot rootProvider   = null;
            IRawElementProviderFragment     buttonProvider = null;
            Button button = null;
            Form   f      = null;

            // Exposes 474634 and 464356
            using (f = new Form()) {
                f.Size = new System.Drawing.Size(400, 400);
                f.Show();

                // Empty form NO CHILDREN
                rootProvider
                    = (IRawElementProviderFragmentRoot)ProviderFactory.GetProvider(f);

                Assert.AreEqual(0,
                                ChildrenCount(rootProvider),
                                "No children");

                // Adding invisible button
                button         = new Button();
                button.Text    = "button";
                button.Visible = false;
                f.Controls.Add(button);

                Assert.AreEqual(0,
                                ChildrenCount(rootProvider),
                                "No children");

                // Changing visibility
                bridge.ResetEventLists();
                button.Visible = true;
                Assert.AreEqual(1,
                                ChildrenCount(rootProvider),
                                "1 child");
                buttonProvider
                    = (IRawElementProviderFragment)ProviderFactory.FindProvider(button);
                Assert.IsNotNull(buttonProvider, "ButtonProvider missing");
                Assert.IsNotNull(bridge.GetStructureChangedEventFrom(buttonProvider,
                                                                     StructureChangeType.ChildAdded),
                                 "Button. StructureChangeType.ChildAdded event missing");
                Assert.AreEqual(rootProvider,
                                buttonProvider.Navigate(NavigateDirection.Parent),
                                "FormProvider != button.Parent");
                buttonProvider = null;

                bridge.ResetEventLists();
                button.Visible = false;
                Assert.AreEqual(0,
                                ChildrenCount(rootProvider),
                                "1 child");
                buttonProvider
                    = (IRawElementProviderFragment)ProviderFactory.FindProvider(button);
                Assert.IsNull(buttonProvider, "ButtonProvider missing");
                Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider,
                                                                  StructureChangeType.ChildAdded),
                              "Button. StructureChangeType.ChildAdded event missing");
                buttonProvider = null;

                // We are already invisible, we don't need to raise any event
                bridge.ResetEventLists();
                f.Controls.Remove(button);
                Assert.AreEqual(0,
                                ChildrenCount(rootProvider),
                                "No children");
                buttonProvider
                    = (IRawElementProviderFragment)ProviderFactory.FindProvider(button);
                Assert.IsNull(buttonProvider, "ButtonProvider missing");
                Assert.IsNull(bridge.GetStructureChangedEventFrom(buttonProvider,
                                                                  StructureChangeType.ChildAdded),
                              "Button. StructureChangeType.ChildAdded event missing");
            }
        }
Пример #35
0
 public CustomProviderFragment(IRawElementProviderFragmentRoot root)
     : base(root)
 {
     ClickCount = 0;
 }
Пример #36
0
		public List (IRawElementProviderFragmentRoot provider) : base (provider)
		{
			this.provider = provider;
			
			selectionProvider = (ISelectionProvider)provider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id);
			if (selectionProvider == null)
				throw new ArgumentException ("List should always implement ISelectionProvider");

			int controlTypeId = (int) Provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id);
			if (controlTypeId == ControlType.Spinner.Id)
				Role = Atk.Role.SpinButton;
			else
				Role = Atk.Role.List;
			
			selectionHelper = new SelectionProviderUserHelper (provider, selectionProvider);
		}
Пример #37
0
 public ListWithGrid(IRawElementProviderFragmentRoot provider) : base(provider)
 {
     tableExpert = new TableImplementorHelper(this);
 }
Пример #38
0
		public ListWithEditableText (IRawElementProviderFragmentRoot provider)
			: base (provider)
		{
			IValueProvider value_prov
				= provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) as IValueProvider;
			if (value_prov == null) {
				throw new ArgumentException ("Provider does not implement IValue");
			}

			text_helper = TextImplementorFactory.GetImplementor (this, provider);
			editableTextExpert = new EditableTextImplementorHelper (this, this, text_helper);
		}
Пример #39
0
        public AutomationDataGridViewHeaderCell(AutomationDataGridView grid, IRawElementProviderFragmentRoot parent, DataGridViewHeaderCell headerCell)
        {
            if (grid == null)
                throw new ArgumentNullException("grid");

            if (headerCell == null)
                throw new ArgumentNullException("headerCell");

            if (parent == null)
                throw new ArgumentNullException("parent");

            _grid = grid;
            _headerCell = headerCell;
            _parent = parent;
        }
Пример #40
0
		public ListWithGrid (IRawElementProviderFragmentRoot provider) : base (provider)
		{
			tableExpert = new TableImplementorHelper (this);
		}
Пример #41
0
        public void PatternsTest()
        {
            ComboBox combobox = GetComboBox();

            combobox.Items.Add("dummy 0");

            IRawElementProviderFragmentRoot rootProvider
                = (IRawElementProviderFragmentRoot)GetProviderFromControl(combobox);

            if (combobox.DropDownStyle == ComboBoxStyle.DropDownList)
            {
                throw new Exception("combobox default style should not be dropdownlist");
            }

            IExpandCollapseProvider     expandCollapseProvider = null;
            IRawElementProviderFragment listChild = null;

            bridge.ResetEventLists();
            combobox.DropDownStyle = ComboBoxStyle.DropDownList;
            Assert.IsTrue(bridge.StructureChangedEvents.Count > 0,
                          "Should generate some event after changing to ComboBoxStyle.DropDownList");
            Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id),
                             "DropDownList: Selection Pattern IS supported");
            expandCollapseProvider = (IExpandCollapseProvider)
                                     rootProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id);
            Assert.IsNotNull(expandCollapseProvider,
                             "DropDownList: ExpandCollapse Pattern IS supported");
            Assert.IsNull(rootProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id),
                          "DropDownList: ValuePattern Pattern IS NOT supported");

            listChild = rootProvider.Navigate(NavigateDirection.FirstChild);
            Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id),
                          "the list of a combobox should be offscreen if it's not expanded");
            expandCollapseProvider.Expand();
            Assert.IsFalse((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id),
                           "the list of a combobox should not be offscreen if it's expanded");
            expandCollapseProvider.Collapse();
            Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id),
                          "the list of a combobox should be offscreen after collapsing");
            TestChildPatterns(rootProvider);

            bridge.ResetEventLists();
            combobox.DropDownStyle = ComboBoxStyle.DropDown;
            Assert.IsTrue(bridge.StructureChangedEvents.Count > 0,
                          "Should generate some event after changing to ComboBoxStyle.DropDown");
            Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id),
                             "DropDown: Selection Pattern IS supported");
            expandCollapseProvider = (IExpandCollapseProvider)
                                     rootProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id);
            Assert.IsNotNull(expandCollapseProvider,
                             "DropDown: ExpandCollapse Pattern IS supported");
            Assert.IsNotNull(rootProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id),
                             "DropDown: ValuePattern Pattern IS supported");
            TestChildPatterns(rootProvider);

            listChild = rootProvider.Navigate(NavigateDirection.FirstChild);
            Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id),
                          "the list of a combobox should be offscreen if it's not expanded");
            expandCollapseProvider.Expand();
            Assert.IsFalse((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id),
                           "the list of a combobox should not be offscreen if it's expanded");
            expandCollapseProvider.Collapse();
            Assert.IsTrue((bool)listChild.GetPropertyValue(AutomationElementIdentifiers.IsOffscreenProperty.Id),
                          "the list of a combobox should be offscreen after collapsing");

            bridge.ResetEventLists();
            combobox.DropDownStyle = ComboBoxStyle.Simple;
            Assert.IsTrue(bridge.StructureChangedEvents.Count > 0,
                          "Should generate some event after changing to ComboBoxStyle.Simple");
            Assert.IsNotNull(rootProvider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id),
                             "Simple: Selection Pattern IS supported");
            // LAMESPEC: ExpandCollapsePatternIdentifiers must always be implemented
            Assert.IsNull(rootProvider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id),
                          "Simple: ExpandCollapse Pattern IS NOT supported");
            Assert.IsNotNull(rootProvider.GetPatternProvider(ValuePatternIdentifiers.Pattern.Id),
                             "Simple: ValuePattern Pattern IS supported");
            TestChildPatterns(rootProvider);
        }
 protected BaseFragmentProvider(IRawElementProviderFragment parent, IRawElementProviderFragmentRoot fragmentRoot)
 {
     this.parent       = parent;
     this.fragmentRoot = fragmentRoot;
 }