Home | History | Annotate | Download | only in base
      1 // Copyright 2018 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MOJO_PUBLIC_CPP_BASE_FILE_ERROR_MOJOM_TRAITS_H_
      6 #define MOJO_PUBLIC_CPP_BASE_FILE_ERROR_MOJOM_TRAITS_H_
      7 
      8 #include "base/files/file.h"
      9 #include "mojo/public/mojom/base/file_error.mojom.h"
     10 
     11 namespace mojo {
     12 
     13 template <>
     14 struct EnumTraits<mojo_base::mojom::FileError, base::File::Error> {
     15   static mojo_base::mojom::FileError ToMojom(base::File::Error error) {
     16     switch (error) {
     17       case base::File::FILE_OK:
     18         return mojo_base::mojom::FileError::OK;
     19       case base::File::FILE_ERROR_FAILED:
     20         return mojo_base::mojom::FileError::FAILED;
     21       case base::File::FILE_ERROR_IN_USE:
     22         return mojo_base::mojom::FileError::IN_USE;
     23       case base::File::FILE_ERROR_EXISTS:
     24         return mojo_base::mojom::FileError::EXISTS;
     25       case base::File::FILE_ERROR_NOT_FOUND:
     26         return mojo_base::mojom::FileError::NOT_FOUND;
     27       case base::File::FILE_ERROR_ACCESS_DENIED:
     28         return mojo_base::mojom::FileError::ACCESS_DENIED;
     29       case base::File::FILE_ERROR_TOO_MANY_OPENED:
     30         return mojo_base::mojom::FileError::TOO_MANY_OPENED;
     31       case base::File::FILE_ERROR_NO_MEMORY:
     32         return mojo_base::mojom::FileError::NO_MEMORY;
     33       case base::File::FILE_ERROR_NO_SPACE:
     34         return mojo_base::mojom::FileError::NO_SPACE;
     35       case base::File::FILE_ERROR_NOT_A_DIRECTORY:
     36         return mojo_base::mojom::FileError::NOT_A_DIRECTORY;
     37       case base::File::FILE_ERROR_INVALID_OPERATION:
     38         return mojo_base::mojom::FileError::INVALID_OPERATION;
     39       case base::File::FILE_ERROR_SECURITY:
     40         return mojo_base::mojom::FileError::SECURITY;
     41       case base::File::FILE_ERROR_ABORT:
     42         return mojo_base::mojom::FileError::ABORT;
     43       case base::File::FILE_ERROR_NOT_A_FILE:
     44         return mojo_base::mojom::FileError::NOT_A_FILE;
     45       case base::File::FILE_ERROR_NOT_EMPTY:
     46         return mojo_base::mojom::FileError::NOT_EMPTY;
     47       case base::File::FILE_ERROR_INVALID_URL:
     48         return mojo_base::mojom::FileError::INVALID_URL;
     49       case base::File::FILE_ERROR_IO:
     50         return mojo_base::mojom::FileError::IO;
     51       case base::File::FILE_ERROR_MAX:
     52         return mojo_base::mojom::FileError::FAILED;
     53     }
     54     NOTREACHED();
     55     return mojo_base::mojom::FileError::FAILED;
     56   }
     57 
     58   static bool FromMojom(mojo_base::mojom::FileError in,
     59                         base::File::Error* out) {
     60     switch (in) {
     61       case mojo_base::mojom::FileError::OK:
     62         *out = base::File::FILE_OK;
     63         return true;
     64       case mojo_base::mojom::FileError::FAILED:
     65         *out = base::File::FILE_ERROR_FAILED;
     66         return true;
     67       case mojo_base::mojom::FileError::IN_USE:
     68         *out = base::File::FILE_ERROR_IN_USE;
     69         return true;
     70       case mojo_base::mojom::FileError::EXISTS:
     71         *out = base::File::FILE_ERROR_EXISTS;
     72         return true;
     73       case mojo_base::mojom::FileError::NOT_FOUND:
     74         *out = base::File::FILE_ERROR_NOT_FOUND;
     75         return true;
     76       case mojo_base::mojom::FileError::ACCESS_DENIED:
     77         *out = base::File::FILE_ERROR_ACCESS_DENIED;
     78         return true;
     79       case mojo_base::mojom::FileError::TOO_MANY_OPENED:
     80         *out = base::File::FILE_ERROR_TOO_MANY_OPENED;
     81         return true;
     82       case mojo_base::mojom::FileError::NO_MEMORY:
     83         *out = base::File::FILE_ERROR_NO_MEMORY;
     84         return true;
     85       case mojo_base::mojom::FileError::NO_SPACE:
     86         *out = base::File::FILE_ERROR_NO_SPACE;
     87         return true;
     88       case mojo_base::mojom::FileError::NOT_A_DIRECTORY:
     89         *out = base::File::FILE_ERROR_NOT_A_DIRECTORY;
     90         return true;
     91       case mojo_base::mojom::FileError::INVALID_OPERATION:
     92         *out = base::File::FILE_ERROR_INVALID_OPERATION;
     93         return true;
     94       case mojo_base::mojom::FileError::SECURITY:
     95         *out = base::File::FILE_ERROR_SECURITY;
     96         return true;
     97       case mojo_base::mojom::FileError::ABORT:
     98         *out = base::File::FILE_ERROR_ABORT;
     99         return true;
    100       case mojo_base::mojom::FileError::NOT_A_FILE:
    101         *out = base::File::FILE_ERROR_NOT_A_FILE;
    102         return true;
    103       case mojo_base::mojom::FileError::NOT_EMPTY:
    104         *out = base::File::FILE_ERROR_NOT_EMPTY;
    105         return true;
    106       case mojo_base::mojom::FileError::INVALID_URL:
    107         *out = base::File::FILE_ERROR_INVALID_URL;
    108         return true;
    109       case mojo_base::mojom::FileError::IO:
    110         *out = base::File::FILE_ERROR_IO;
    111         return true;
    112     }
    113     NOTREACHED();
    114     return false;
    115   }
    116 };
    117 
    118 }  // namespace mojo
    119 
    120 #endif  // MOJO_PUBLIC_CPP_BASE_FILE_ERROR_MOJOM_TRAITS_H_
    121