**Do you want to request a _feature_ or report a _bug_?**

This is a bug report.

**What is the current behavior?**

In Safari, the type of input field is not updated properly. Consider the example linked below. It is a React component that display a button and an input field. The type of input field will be toggled between file or text by clicking the button. The change of input type is not being reflected.

I believe this is an issue with Safari. Setting the `type` property in Safari does not affect what is being rendered:

``` javascript
var a = document.createElement("input");
a.type = "text";
document.body.appendChild(a); // A text input is shown
a.type = "file"; // The input remains a text input in Safari.
```

**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://jsfiddle.net or similar (template: https://jsfiddle.net/reactjs/69z2wepo/).**

https://jsfiddle.net/x1xtbjt0/2/

**What is the expected behavior?**

The input type should be changed, as in Chrome and Firefox.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**

React: 15.1.0
ReactDOM: 15.1.0
Browser: Safari 9.1.1, Chrome 51.0.2704.103, Firefox 47.0
OS: OS X 10.11.5

var ReactDOMOption = require('ReactDOMOption');
var ReactDOMSelect = require('ReactDOMSelect');
var ReactDOMTextarea = require('ReactDOMTextarea');
var ReactInstrumentation = require('ReactInstrumentation');
var ReactMultiChild = require('ReactMultiChild');
var ReactServerRenderingTransaction = require('ReactServerRenderingTransaction');
var emptyFunction = require('emptyFunction');
var escapeTextContentForBrowser = require('escapeTextContentForBrowser');
var invariant = require('invariant');
var isEventSupported = require('isEventSupported');
var keyOf = require('keyOf');
var shallowEqual = require('shallowEqual');
var inputValueTracking = require('inputValueTracking');
var validateDOMNesting = require('validateDOMNesting');
var warning = require('warning');
var Flags = ReactDOMComponentFlags;
var deleteListener = EventPluginHub.deleteListener;
var getNode = ReactDOMComponentTree.getNodeFromInstance;
var listenTo = ReactBrowserEventEmitter.listenTo;
var registrationNameModules = EventPluginRegistry.registrationNameModules;
var CONTENT_TYPES = {'string': true, 'number': true};
var STYLE = keyOf({style: null});
var HTML = keyOf({__html: null});
var RESERVED_PROPS = {
  children: null,
  dangerouslySetInnerHTML: null,
  suppressContentEditableWarning: null,
};
var DOC_FRAGMENT_TYPE = 11;
function getDeclarationErrorAddendum(internalInstance) {