the 'else if' part is huge. How about?
if (!base::PathExists(path))
  return false;

if (base::DirectoryExists(path)) {
  NOTIMPLEMENTED();
  return false;
}

...the 'else if' part...