Here is a trick that allows you to get exactly what you're looking for:
x/y DiracDelta[x - y],
DiracDelta[x - y]
What I did here is to apply the Fourier transform and its inverse, which is of course the identity and therefore is equivalent to the original expression. But in doing so, Mathematica automatically did the required simplifications because it knows exactly how to deal with Dirac deltas inside Fourier integrals. By the way, Mathematica can even deal with derivatives of the delta function in the same way.
As stated by Nikki in the comment, it's important to keep track of which entry in the
DiracDelta is the intended integration variable. This is not always clear from just looking at the delta function because it is by definition symmetric. The choice of intended integration variable is specified in the
The reason why it's not done by
The ambiguity as to the integration variable is really the answer to the question why
FullSimplify doesn't do anything with
DiracDelta. Strictly speaking,
DiracDelta is a distribution and not a function. It picks out the value of a function given to it, at the position specified by a parameter. This operation happens to be symmetric in the example of the question in that parameter and function variable have interchangeable roles, but nonetheless their distinction becomes important when the argument of
DiracDelta is itself a function that depends on the "parameter" and the "variable" in an asymmetric way.
Take, for example, $y\,\delta(x-f(y))$. If we assume $x$ to be the integration variable, nothing needs to be simplified. If, on the other hand, $y$ is the integration variable, the simplification goal would be to let $y$ stand alone inside the delta function, requiring us to invert the function $f$. There is no way to decide which of these routes is desired unless you state whether $x$ or $y$ is the integration variable. This situation is illustrated in the examples below.
Sometimes you do have to add assumptions in order to get a fully simplified result, because Mathematica's default assumption that variables are complex also applies to
DiracDelta, and you may not want that. Here is an example, modified from the comment by Dr.Wolfgang:
Assuming[y > 0,
(y/x DiracDelta[y - x^2]),
x, k], k, x]]
1/2 DiracDelta[x - Sqrt[y]] - 1/2 DiracDelta[x + Sqrt[y]]
This is an application of the transformation of variables formula for delta functions. We can push this to make even more symbolically general statements like this:
Assuming[y > 0 && n ∈ Integers && n > 0,
(y/x DiracDelta[y - x^n]),
x, k], k, x]]
DiracDelta[x - y^(1/n)]/n
However, as you can see by comparison with the previous, more concrete result (
n = 2), the more general answer here is missing the fact that the inverse of the power has multiple branches which should be summed over. So I guess this is a caveat not to get carried away and always do a sanity check when simplifying complicated delta function expressions with Mathematica.